From c2f2622ab47657b61e3c0232befba511aa78885a Mon Sep 17 00:00:00 2001 From: Itamar Zand Date: Tue, 21 Jul 2026 13:40:57 +0300 Subject: [PATCH 1/4] feat: gate resources on deployer stack inputs --- client-sdks/platform/openapi.json | 2 +- client-sdks/platform/rust/openapi-3.0.json | 2 +- client-sdks/platform/rust/openapi.json | 2 +- crates/alien-cli/src/commands/render.rs | 1 + crates/alien-cloudformation/src/emitter.rs | 13 + .../emitters/aws/remote_stack_management.rs | 1 + .../src/emitters/enabled.rs | 42 ++ .../alien-cloudformation/src/emitters/mod.rs | 1 + crates/alien-cloudformation/src/generator.rs | 265 ++++++-- crates/alien-cloudformation/src/template.rs | 11 +- crates/alien-core/src/compute_planner.rs | 5 + crates/alien-core/src/deployment/config.rs | 37 ++ crates/alien-core/src/stack.rs | 77 ++- crates/alien-core/src/stack_input.rs | 57 ++ .../alien-deploy-cli/src/commands/register.rs | 51 ++ crates/alien-deployment/src/helpers.rs | 3 + crates/alien-deployment/src/lib.rs | 1 + crates/alien-deployment/src/pending.rs | 277 ++++++++- crates/alien-deployment/src/runner.rs | 2 + crates/alien-deployment/src/updating.rs | 172 +++++- .../alien-deployment/tests/test_platform.rs | 158 +++++ .../alien-infra/src/core/controller_test.rs | 2 + .../src/core/executor_tests/helpers.rs | 1 + crates/alien-infra/src/network/aws_import.rs | 1 + crates/alien-infra/tests/importers.rs | 2 + crates/alien-manager/src/loops/deployment.rs | 1 + crates/alien-manager/src/routes/stack.rs | 16 + crates/alien-manager/src/routes/sync.rs | 1 + .../src/stores/sqlite/deployment.rs | 4 + .../src/traits/deployment_store.rs | 3 + crates/alien-manager/tests/loop_import.rs | 1 + crates/alien-manager/tests/stack_import.rs | 58 ++ crates/alien-operator/src/loops/deployment.rs | 1 + .../frozen_resources_unchanged.rs | 10 + .../permission_profiles_unchanged.rs | 385 +++++++++++- .../compile_time/allowed_user_resources.rs | 6 + .../compile_time/capacity_group_profile.rs | 1 + .../src/compile_time/container_lifecycle.rs | 2 + .../external_bindings_required.rs | 2 + .../compile_time/frozen_resource_lifecycle.rs | 7 + .../live_provision_permissions.rs | 1 + .../src/compile_time/machines_resources.rs | 1 + .../alien-preflights/src/compile_time/mod.rs | 2 + .../src/compile_time/network_required.rs | 5 + .../compile_time/permission_profiles_exist.rs | 4 + .../compile_time/public_worker_lifecycle.rs | 4 + .../compile_time/resource_enabled_valid.rs | 574 ++++++++++++++++++ .../src/compile_time/resource_id_pattern.rs | 1 + .../src/compile_time/resource_name_length.rs | 3 + .../compile_time/resource_references_exist.rs | 3 + .../service_account_impersonate_validation.rs | 1 + .../src/compile_time/single_queue_trigger.rs | 5 + .../src/compile_time/stack_inputs.rs | 1 + .../compile_time/trigger_edge_ownership.rs | 2 + .../src/compile_time/unique_resources.rs | 5 + .../valid_resource_dependencies.rs | 4 + .../src/compile_time/worker_memory.rs | 1 + .../src/deployment_prerequisites.rs | 7 + crates/alien-preflights/src/lib.rs | 1 + .../azure_container_apps_environment.rs | 1 + .../src/mutations/azure_resource_group.rs | 1 + .../src/mutations/azure_service_activation.rs | 1 + .../mutations/azure_service_bus_namespace.rs | 1 + .../src/mutations/azure_storage_account.rs | 1 + .../src/mutations/compute_cluster.rs | 21 + .../src/mutations/gcp_service_activation.rs | 1 + .../mutations/infrastructure_dependencies.rs | 3 + .../src/mutations/kubernetes_cluster.rs | 2 + .../management_permission_profile.rs | 28 +- .../alien-preflights/src/mutations/network.rs | 3 + .../src/mutations/remote_stack_management.rs | 2 + .../mutations/resource_link_permissions.rs | 3 + .../src/mutations/secrets_vault.rs | 26 +- .../src/mutations/service_account.rs | 1 + .../mutations/service_account_dependencies.rs | 1 + crates/alien-terraform/src/emitter.rs | 18 + .../emitters/aws/remote_stack_management.rs | 2 + .../alien-terraform/src/emitters/enabled.rs | 190 ++++++ crates/alien-terraform/src/emitters/mod.rs | 1 + crates/alien-terraform/src/expr.rs | 14 + crates/alien-terraform/src/generator.rs | 60 +- crates/alien-test/src/distribution.rs | 2 + packages/core/src/__tests__/stack.test.ts | 114 ++++ .../src/generated/schemas/resourceEntry.json | 2 +- .../core/src/generated/schemas/stack.json | 2 +- .../generated/zod/resource-entry-schema.ts | 1 + packages/core/src/index.ts | 5 +- packages/core/src/kv.ts | 7 +- packages/core/src/postgres.ts | 7 +- packages/core/src/queue.ts | 7 +- packages/core/src/resource.ts | 52 +- packages/core/src/stack.ts | 3 + packages/core/src/storage.ts | 7 +- packages/core/src/vault.ts | 7 +- 94 files changed, 2801 insertions(+), 105 deletions(-) create mode 100644 crates/alien-cloudformation/src/emitters/enabled.rs create mode 100644 crates/alien-preflights/src/compile_time/resource_enabled_valid.rs create mode 100644 crates/alien-terraform/src/emitters/enabled.rs diff --git a/client-sdks/platform/openapi.json b/client-sdks/platform/openapi.json index 08c826ec3..e3768067b 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":{"WorkspaceInvitationPreview":{"type":"object","properties":{"kind":{"type":"string","enum":["email","link"]},"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])*$"},"logoUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name","logoUrl"]},"inviter":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"image":{"type":"string","nullable":true,"format":"uri"}},"required":["name","image"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"state":{"type":"string","enum":["active","accepted","expired","revoked"]},"emailHint":{"type":"string","nullable":true}},"required":["kind","workspace","inviter","role","expiresAt","state","emailHint"],"additionalProperties":false},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"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."},"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."},"requestId":{"type":"string","description":"Request ID echoed in the x-request-id response header and server logs."}},"required":["code","message","internal"]},"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},"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},"AcceptWorkspaceInvitationResponse":{"type":"object","properties":{"outcome":{"type":"string","enum":["joined","already-member"]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"workspaceName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["outcome","workspaceId","workspaceName","role"],"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"},"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},"AgentSettings":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"enabled":{"type":"boolean","description":"Workspace on/off switch for the ai-agent. When `false`, incoming triggers (release/deployment monitoring and Slack-invoked sessions) are rejected before any session runs. Defaults to `true`."},"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","enabled","debugPermissionMode","createdAt","updatedAt"],"additionalProperties":false},"UpdateWorkspaceSettingsRequest":{"type":"object","properties":{"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"enabled":{"type":"boolean","description":"Turn the ai-agent on (`true`) or off (`false`) for this workspace."}}},"WorkspaceInvitation":{"type":"object","properties":{"id":{"type":"string","pattern":"winv_[0-9a-zA-Z]{32}$","description":"Unique identifier for the workspace invitation.","example":"winv_DsgltMIFV0GmqtxV5NYTtrknrna"},"email":{"type":"string","format":"email"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"deliveryStatus":{"type":"string","enum":["pending","sent","failed"]},"expiresAt":{"type":"string","format":"date-time"},"lastSentAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","email","role","status","deliveryStatus","expiresAt","lastSentAt","createdAt","inviteUrl"],"additionalProperties":false},"WorkspaceInviteLink":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"wil_[0-9a-zA-Z]{40}$","description":"Unique identifier for the workspace invite link.","example":"wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"useCount":{"type":"integer","minimum":0},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","role","expiresAt","createdAt","useCount","lastUsedAt","inviteUrl"],"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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"]},"DeploymentLinkSetupResponse":{"type":"object","properties":{"activeRelease":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"version":{"type":"string","nullable":true},"stack":{"$ref":"#/components/schemas/StackByPlatform"}},"required":["id","version","stack"]},"visiblePackageTypes":{"type":"array","items":{"type":"string","enum":["cli","cloudformation","helm","operator-image","terraform"],"description":"Types of packages that can be built"}},"visibleSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}}},"required":["activeRelease","visiblePackageTypes","visibleSetupMethods"]},"StackByPlatform":{"type":"object","nullable":true,"properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"machines":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"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":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"]},"EnsureDeploymentGroupByNameRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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 for newly created groups"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."}},"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","machines","local","test"],"description":"Represents the target cloud platform."}},"allowedKubernetesBasePlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","on-prem"]},"minItems":1,"description":"Kubernetes base environments the recipient may target."},"allowedKubernetesClusterSources":{"type":"array","items":{"$ref":"#/components/schemas/KubernetesClusterSource"},"minItems":1,"description":"Whether recipients may create a cluster, use an existing cluster, or both."},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"KubernetesClusterSource":{"type":"string","enum":["create","existing"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","operator-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","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input. Null for release-less packages such as Operate Operator images.","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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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":["operator-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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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\")"},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain embedded into the Operator binary, if whitelabeled."}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["operator-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},"leaseExpiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiration of the current builder lease"},"buildPhase":{"type":"string","nullable":true,"enum":["building","publishing",null],"description":"Coarse package build phase"},"lastProgressAt":{"type":"string","format":"date-time","nullable":true,"description":"Last successful builder lease renewal or phase change"},"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","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"},"rollout":{"type":"object","nullable":true,"properties":{"updatedCount":{"type":"integer","description":"Deployments that finished updating to this release (excludes initial provisions)"},"pendingCount":{"type":"integer","description":"Deployments currently targeting this release but not yet running it"},"avgDurationMs":{"type":"number","nullable":true,"description":"Average time from release creation until a deployment finished updating, in milliseconds"}},"required":["updatedCount","pendingCount","avgDurationMs"],"description":"Rollout stats, included when ?include=rollout is used"}}}]},"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},"version":{"type":"string","minLength":1,"maxLength":256},"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","version","createdAt","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"version":{"type":"string","minLength":1,"maxLength":256},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"OperatorCapabilityReport":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128},"state":{"$ref":"#/components/schemas/OperatorCapabilityState"},"detail":{"type":"string","nullable":true,"maxLength":512}},"required":["key","state"]},"OperatorCapabilityState":{"type":"string","enum":["granted","denied","unavailable"]},"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"},"version":{"type":"string","minLength":1,"maxLength":256},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","version","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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"protocol":{"type":"string","enum":["http","tcp"]},"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535},"wildcardHost":{"type":"string"}},"required":["url","protocol","host","port"]},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Effective deployment model persisted for the deployment."},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment","deploymentModel"]},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"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."},"operatorScope":{"type":"string","minLength":1,"maxLength":512,"description":"Display-only scope reported by the Operator manifest."},"operatorPermission":{"type":"string","minLength":1,"maxLength":64,"description":"Display-only permission tier reported by the Operator manifest."},"initialDesiredRelease":{"type":"string","enum":["active","none"],"default":"active","description":"Desired-release selection for a new deployment. Use none to register an environment without initially requesting a release; later updates can assign one."}},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."}]},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"scheduleReconciliation":{"type":"boolean","default":false},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"DeploymentInputsResponse":{"type":"object","properties":{"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","machines","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."}},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"description":"Current non-secret input values. Secret values are never returned."},"providedInputIds":{"type":"array","items":{"type":"string"},"description":"Input IDs that currently have a value, including redacted secrets."}},"required":["inputs","values","providedInputIds"]},"UpdateDeploymentInputsResponse":{"allOf":[{"$ref":"#/components/schemas/DeploymentInputsResponse"},{"type":"object","properties":{"runtimeUpdateRequested":{"type":"boolean"}},"required":["runtimeUpdateRequested"]}]},"UpdateDeploymentInputsRequest":{"type":"object","properties":{"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"clearInputIds":{"type":"array","items":{"type":"string"},"default":[]}},"additionalProperties":false},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","machines","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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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."}},"required":["project"]},"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","waiting-for-machines","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"]},"PrepareOperatorManifestPackageResponse":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"PrepareOperatorManifestPackageRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}},"required":["project"],"additionalProperties":false},"RenderOperatorManifestResponse":{"type":"object","properties":{"manifest":{"type":"string","description":"Rendered multi-document Kubernetes manifest"},"applyCommand":{"type":"string","description":"kubectl command for applying the manifest from a file"},"filename":{"type":"string","description":"Suggested local filename"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL embedded in the manifest"},"imagePending":{"type":"boolean","description":"True when the operator image is still building. The manifest contains a placeholder image () and must not be applied yet — re-render once the operator-image package is ready to get the real image."}},"required":["manifest","applyCommand","filename","managerUrl","imagePending"]},"RenderOperatorManifestRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"format":{"type":"string","enum":["raw","helm"],"default":"raw","description":"raw: a kubectl-applyable manifest for one cluster. helm: a paste-into-your-chart template whose namespace and environment name come from Helm at install time."},"environmentName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Per-environment identity. Required for raw output, ignored for helm.","example":"my-app"},"namespace":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$","description":"Namespace to observe and install into. Omit for helm to use the release namespace."},"scope":{"type":"string","enum":["namespace","cluster"],"default":"namespace","description":"namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace."},"labelSelector":{"type":"string","minLength":1,"maxLength":256,"description":"Optional Kubernetes label selector narrowing what is managed, applied within the scope."},"permission":{"type":"string","enum":["observe"],"default":"observe","description":"Operator permission tier"},"operatorImagePackageId":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Ready operator-image package to use for the Operator image. If omitted, the latest ready operator-image package for the project is used.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group token embedded in the operator Secret"},"logCollector":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"description":"Enable the node log collector DaemonSet for raw pod logs."}},"required":["project","deploymentGroupToken"],"additionalProperties":false},"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"]},"EventListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Event"},{"type":"object","properties":{"releaseCreatedAt":{"type":"string","format":"date-time","description":"createdAt of the event's referenced release, included when ?include=releaseCreatedAt is used"}}}]},"ListMachinesJoinTokensResponse":{"type":"object","properties":{"tokens":{"type":"array","items":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"}}},"required":["tokens"]},"MachinesJoinTokenSummary":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"expiresAt":{"type":"string","nullable":true},"maxJoins":{"type":"integer","nullable":true},"joinCount":{"type":"integer"},"lastUsedAt":{"type":"string","nullable":true},"revokedAt":{"type":"string","nullable":true}},"required":["id","createdAt","createdBy","joinCount"]},"CreateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RotateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RevokeMachinesJoinTokenResponse":{"type":"object","properties":{"tokenId":{"type":"string"},"revoked":{"type":"boolean"}},"required":["tokenId","revoked"]},"ListMachinesInventoryResponse":{"type":"object","properties":{"machines":{"type":"array","items":{"$ref":"#/components/schemas/MachinesInventoryItem"}}},"required":["machines"]},"MachinesInventoryItem":{"type":"object","properties":{"machineId":{"type":"string"},"status":{"type":"string"},"capacityGroup":{"type":"string"},"zone":{"type":"string"},"cpu":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"memory":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"storage":{"allOf":[{"$ref":"#/components/schemas/MachinesCapacityMetric"}],"nullable":true},"drainBlockers":{"type":"array","items":{"$ref":"#/components/schemas/MachinesDrainBlocker"}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"overlayIp":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"horizondVersion":{"type":"string","nullable":true},"localOverrides":{"type":"array","items":{"$ref":"#/components/schemas/MachinesLocalOverrideObservation"}},"localOverridesObservedAt":{"type":"string","nullable":true},"replicaCount":{"type":"integer"}},"required":["machineId","status","capacityGroup","zone","cpu","memory","drainBlockers","drainForce","lastHeartbeat","localOverrides","replicaCount"]},"MachinesCapacityMetric":{"type":"object","properties":{"allocated":{"type":"number"},"systemReserve":{"type":"number"},"total":{"type":"number"}},"required":["allocated","systemReserve","total"]},"MachinesDrainBlocker":{"type":"object","properties":{"reason":{"type":"string"},"workloadId":{"type":"string","nullable":true},"workloadName":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true},"schedulingMode":{"type":"string","nullable":true},"state":{"type":"string","nullable":true}},"required":["reason"]},"MachinesLocalOverrideObservation":{"type":"object","properties":{"activeDigest":{"type":"string","nullable":true},"actor":{"type":"string","nullable":true},"baseAssignmentHash":{"type":"string"},"baseDigest":{"type":"string","nullable":true},"candidateDigest":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"failureCategory":{"type":"string","nullable":true},"fallbackDigest":{"type":"string","nullable":true},"forcedStop":{"type":"boolean","nullable":true},"healthySince":{"type":"string","nullable":true},"incidentId":{"type":"string","nullable":true},"lifecycle":{"type":"string"},"phaseStartedAt":{"type":"string","nullable":true},"replicaId":{"type":"string"},"workloadName":{"type":"string"}},"required":["baseAssignmentHash","lifecycle","replicaId","workloadName"]},"CancelMachinesMachineDrainResponse":{"type":"object","properties":{"machineId":{"type":"string"},"cancelled":{"type":"boolean"}},"required":["machineId","cancelled"]},"DrainMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"requested":{"type":"boolean"}},"required":["machineId","requested"]},"DrainMachinesMachineRequest":{"type":"object","properties":{"deadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"force":{"type":"boolean"}}},"RemoveMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"removed":{"type":"boolean"}},"required":["machineId","removed"]},"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","machines","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":"Delivery mode for this command (push/pull), derived from the target at creation time"},"target":{"type":"object","nullable":true,"properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to; null on commands created before target routing"},"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","target","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"},"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to"},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How the command is delivered to its target"}},"required":["id","projectId","deploymentModel","target","deliveryMode"]},"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"},"target":{"type":"string","maxLength":255,"description":"Resource id the command is addressed to. Required when the deployment has more than one command-capable resource."},"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"]},"ResolvedCommandTarget":{"type":"object","properties":{"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Identifies the specific resource a command is addressed to."},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How a command is delivered to its target resource.\n\nThis is a Commands-protocol-specific concept and is intentionally distinct\nfrom `DeploymentModel` (see `stack_settings.rs`), which governs the\ninfrastructure-level push/pull wiring for a deployment. Serialized\nlowercase for consistency with `CommandTargetType`."}},"required":["target","deliveryMode"]},"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"}}},"DispatchCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"DispatchCommandRequest":{"type":"object","properties":{"dispatchedAt":{"type":"string","format":"date-time","description":"When the command was dispatched"}},"required":["dispatchedAt"]},"CompleteCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"CompleteCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["SUCCEEDED","FAILED","EXPIRED"],"description":"Terminal state to transition to"},"completedAt":{"type":"string","format":"date-time","description":"When the 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"}},"required":["state","completedAt"]},"IncrementCommandAttemptResponse":{"type":"object","properties":{"attempt":{"type":"integer","description":"The attempt number after the increment"}},"required":["attempt"]},"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","machines","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","machines","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"},"pinnedSubdomain":{"type":"string","nullable":true}},"required":["id","name","pinnedSubdomain"],"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"requiresNetwork":{"type":"boolean","description":"Whether the stack contains resources that require cloud VPC networking"},"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","requiresNetwork","resourceCounts","publicEndpoints"]},"generatedDomain":{"type":"object","nullable":true,"properties":{"domain":{"type":"string"},"isSystem":{"type":"boolean"}},"required":["domain","isSystem"],"description":"Parent domain for generated deployment URLs. Chosen public subdomains are only allowed when isSystem is false."}},"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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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","machines","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"},"readiness":{"type":"object","properties":{"status":{"type":"string","enum":["ready","notReady","unknown"]},"checks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"string","enum":["passed","failed","warning","unknown"]},"message":{"type":"string"},"checkedAt":{"type":"string"}},"required":["code","status","message","checkedAt"]}}},"required":["status","checks"]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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"]},"SlackInstallUrlResponse":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"SlackIntegrationStatus":{"type":"object","properties":{"connected":{"type":"boolean"},"slackTeamId":{"type":"string","nullable":true},"slackTeamName":{"type":"string","nullable":true},"installedByUserId":{"type":"string","nullable":true},"installedAt":{"type":"string","nullable":true},"notificationChannelId":{"type":"string","nullable":true}},"required":["connected","slackTeamId","slackTeamName","installedByUserId","installedAt","notificationChannelId"]},"SlackChannelsResponse":{"type":"object","properties":{"channels":{"type":"array","items":{"$ref":"#/components/schemas/SlackChannel"}}},"required":["channels"]},"SlackChannel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isMember":{"type":"boolean"}},"required":["id","name","isMember"]},"SlackNotificationChannelResponse":{"type":"object","properties":{"notificationChannelId":{"type":"string","nullable":true},"warning":{"type":"string","nullable":true}},"required":["notificationChannelId","warning"]},"SlackNotificationChannelRequest":{"type":"object","properties":{"channelId":{"type":"string","nullable":true}},"required":["channelId"]},"AgentSessionListResponse":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionListItem"}}},"required":["sessions"]},"AgentSessionListItem":{"type":"object","properties":{"id":{"type":"string"},"triggerType":{"type":"string"},"subjectId":{"type":"string"},"subject":{"$ref":"#/components/schemas/AgentSessionSubject"},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","triggerType","subjectId","subject","status","createdAt","updatedAt"]},"AgentSessionSubject":{"type":"object","properties":{"deploymentName":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"releaseId":{"type":"string","nullable":true},"releaseCommitMessage":{"type":"string","nullable":true},"releaseCommitRef":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true}},"required":["deploymentName","deploymentGroupId","deploymentGroupName","releaseId","releaseCommitMessage","releaseCommitRef","projectId","projectName"]},"AgentSessionDetail":{"allOf":[{"$ref":"#/components/schemas/AgentSessionListItem"},{"type":"object","properties":{"resultText":{"type":"string","nullable":true},"toolNames":{"type":"array","nullable":true,"items":{"type":"string"}},"error":{"type":"string","nullable":true},"pendingApproval":{"type":"object","nullable":true,"properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["resultText","toolNames","error","pendingApproval"]}]},"AgentSessionEventsResponse":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionEvent"}},"latestSeq":{"type":"number"},"hasMore":{"type":"boolean"}},"required":["events","latestSeq","hasMore"]},"AgentSessionEvent":{"oneOf":[{"$ref":"#/components/schemas/AgentSessionStatusEvent"},{"$ref":"#/components/schemas/AgentSessionStepEvent"},{"$ref":"#/components/schemas/AgentSessionToolCallEvent"},{"$ref":"#/components/schemas/AgentSessionToolResultEvent"},{"$ref":"#/components/schemas/AgentSessionMarkdownEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalRequestedEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalGrantedEvent"},{"$ref":"#/components/schemas/AgentSessionRestartedEvent"},{"$ref":"#/components/schemas/AgentSessionEventsTruncatedEvent"}],"discriminator":{"propertyName":"type","mapping":{"status":"#/components/schemas/AgentSessionStatusEvent","step":"#/components/schemas/AgentSessionStepEvent","tool_call":"#/components/schemas/AgentSessionToolCallEvent","tool_result":"#/components/schemas/AgentSessionToolResultEvent","markdown":"#/components/schemas/AgentSessionMarkdownEvent","approval_requested":"#/components/schemas/AgentSessionApprovalRequestedEvent","approval_granted":"#/components/schemas/AgentSessionApprovalGrantedEvent","session_restarted":"#/components/schemas/AgentSessionRestartedEvent","events_truncated":"#/components/schemas/AgentSessionEventsTruncatedEvent"}}},"AgentSessionStatusEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["status"]},"payload":{"type":"object","properties":{"status":{"type":"string"},"error":{"type":"string"}},"required":["status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionStepEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["step"]},"payload":{"type":"object","properties":{"stepId":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["in_progress","complete","error"]}},"required":["stepId","title","status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolCallEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_call"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolResultEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_result"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string","nullable":true},"toolName":{"type":"string","nullable":true},"ok":{"type":"boolean"},"output":{"nullable":true}},"required":["toolCallId","toolName","ok"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionMarkdownEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["markdown"]},"payload":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalRequestedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_requested"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalGrantedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_granted"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"approvedByUserId":{"type":"string"},"approvedByName":{"type":"string","nullable":true},"source":{"type":"string","enum":["dashboard","slack"]}},"required":["approvalId","approvedByUserId","approvedByName","source"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionRestartedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["session_restarted"]},"payload":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionEventsTruncatedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["events_truncated"]},"payload":{"type":"object","properties":{"limit":{"type":"number"}},"required":["limit"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApproveResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"resumed":{"type":"boolean"}},"required":["jobId","status","resumed"]},"AgentSessionStopResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"canceled":{"type":"boolean"}},"required":["jobId","status","canceled"]},"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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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"},"SyncAcquireResponseDeployment":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the 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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"]},"SyncContextRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the context. Manager-scoped tokens are constrained to their own manager ID."}]},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session","deploymentModel"],"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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."},"resourceHeartbeats":{"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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."},"observedInventoryBatches":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"],"description":"Backend whose observer produced this snapshot."},"complete":{"type":"boolean","description":"Whether this batch is a complete replacement for the scope. Complete\nbatches tombstone previously observed rows in the same scope when they\nare absent from `resources`."},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"inventoryScope":{"type":"string","description":"Stable scope for the provider list operation that produced this batch."},"observedAt":{"type":"string","format":"date-time","description":"Time the inventory scope was observed."},"resources":{"type":"array","items":{"type":"object","properties":{"alienResourceId":{"type":"string","nullable":true},"attributes":{"type":"object","properties":{},"additionalProperties":{"nullable":true}},"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"counts":{"oneOf":[{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},{"nullable":true}]},"deploymentId":{"type":"string","nullable":true},"displayName":{"type":"string"},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerKind":{"type":"string","description":"Provider-native kind, such as `apps/v1/Deployment`,\n`AWS::S3::Bucket`, `storage.googleapis.com/Bucket`, or an Azure\nresource type."},"providerStale":{"type":"boolean"},"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"]}},"rawIdentity":{"type":"string","description":"Provider-native stable identity: Kubernetes object identity, cloud ARN,\nGCP full resource name, Azure resource id, etc."},"region":{"type":"string","nullable":true},"resourceTypeHint":{"oneOf":[{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},{"nullable":true}]},"scope":{"type":"string","nullable":true},"version":{"type":"string","nullable":true,"description":"Release/version identity observed from the provider resource, when available."}},"required":["displayName","health","lifecycle","partial","providerKind","providerStale","rawIdentity"]}},"sourceKind":{"type":"string","description":"Writer/source for this inventory pass, such as `operator` or\n`manager-observer`."}},"required":["backend","complete","controllerPlatform","inventoryScope","observedAt","resources","sourceKind"]},"description":"Observed raw-resource inventory batches read during this step."},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Operator-reported runtime capabilities."},"operatorVersion":{"type":"string","minLength":1,"maxLength":128,"description":"Operator binary version reported by the runtime."}},"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","machines","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","machines","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/invitations/{token}":{"get":{"operationId":"getWorkspaceInvitationPreview","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation preview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitationPreview"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/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/user/invitations/{token}/accept":{"post":{"operationId":"acceptWorkspaceInvitation","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptWorkspaceInvitationResponse"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation unavailable.","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/workspaces/{id}/settings":{"get":{"operationId":"getWorkspaceSettings","description":"Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"getSettings","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 ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspaceSettings","description":"Update the ai-agent settings for a workspace. Supports `debugPermissionMode` (`ask` requires human approval on every ai-agent debug command, `auto` runs them without asking) and `enabled` (`false` turns the ai-agent off so incoming triggers are rejected before any session runs).","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateSettings","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":{"$ref":"#/components/schemas/UpdateWorkspaceSettingsRequest"}}}},"responses":{"200":{"description":"Updated ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations":{"get":{"operationId":"listWorkspaceInvitations","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":"Pending invitations.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceInvitation"}}},"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":"createWorkspaceInvitation","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"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["email","role"]}}}},"responses":{"201":{"description":"Invitation created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"403":{"description":"Seat limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations/{invitationId}/resend":{"post":{"operationId":"resendWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation email sent again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"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}/invitations/{invitationId}":{"delete":{"operationId":"revokeWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation revoked."},"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}/invite-link":{"get":{"operationId":"getWorkspaceInviteLink","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":"Active invite link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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"}}}}}},"put":{"operationId":"createWorkspaceInviteLink","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":{"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["role"]}}}},"responses":{"200":{"description":"Invite link created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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":"revokeWorkspaceInviteLink","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":"Invite link revoked."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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}/deployment-link-setup":{"get":{"operationId":"getProjectDeploymentLinkSetup","description":"Get the active release stack and portal-visible setup availability for deployment-link configuration.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentLinkSetup","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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-link setup retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentLinkSetupResponse"}}}},"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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/by-name":{"put":{"operationId":"ensureDeploymentGroupByName","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and name","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/EnsureDeploymentGroupByNameRequest"}}}},"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"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/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"}}}},"400":{"description":"Deployment setup configuration is invalid","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}/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","enum":["cli","cloudformation","helm","operator-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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"200":{"description":"Existing deployment returned for idempotent deployment-group registration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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 a running or runtime-failed deployment. Running deployments start an update; failed deployments retry toward the selected 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 from the deployment's current lifecycle state.","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}/inputs":{"get":{"operationId":"getDeploymentInputs","description":"Get the active input definitions and current non-secret values for a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInputs","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 inputs returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInputsResponse"}}}},"403":{"description":"Insufficient permission to read deployment inputs.","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"}}}}}},"patch":{"operationId":"updateDeploymentInputs","description":"Update runtime stack inputs, rebuild their environment-variable mappings, and request a deployment update when runtime configuration changes.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateInputs","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/UpdateDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Deployment inputs saved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentInputsResponse"}}}},"400":{"description":"Input values are invalid for the deployment release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update deployment inputs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, project, 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}/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"]}}}},"400":{"description":"Environment variables are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update environment variables.","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}/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","machines","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/operator-manifests/prepare":{"post":{"operationId":"prepareOperatorManifestPackage","tags":["operator-manifests"],"summary":"Prepare the white-labeled Operator image for an Operate install","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/PrepareOperatorManifestPackageRequest"}}}},"responses":{"200":{"description":"Operator image package created or reused.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareOperatorManifestPackageResponse"}}}},"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/operator-manifests/render":{"post":{"operationId":"renderOperatorManifest","tags":["operator-manifests"],"summary":"Render a Kubernetes Operator manifest","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/RenderOperatorManifestRequest"}}}},"responses":{"200":{"description":"Operator manifest rendered successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderOperatorManifestResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Operator image package is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Invalid platform or manager configuration.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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":"array","items":{"type":"string","enum":["releaseCreatedAt"]},"description":"Optional fields to include: releaseCreatedAt"},"required":false,"description":"Optional fields to include: releaseCreatedAt","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 events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EventListItemResponse"},"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/machines/deployments/{id}/join-tokens":{"get":{"operationId":"listMachinesJoinTokens","x-speakeasy-group":"machines","x-speakeasy-name-override":"listJoinTokens","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":"Join tokens for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesJoinTokensResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"createMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"createJoinToken","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":"Newly minted Machines join token. Existing tokens keep working; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/rotate":{"post":{"operationId":"rotateMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"rotateJoinToken","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":"Rotated Machines join token. Revokes all existing tokens, then mints a new one; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/{tokenId}":{"delete":{"operationId":"revokeMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"revokeJoinToken","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":1},"required":true,"name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines join token revocation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/inventory":{"get":{"operationId":"listMachinesInventory","x-speakeasy-group":"machines","x-speakeasy-name-override":"listInventory","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":"Machine inventory for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesInventoryResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}/drain":{"delete":{"operationId":"cancelMachinesMachineDrain","x-speakeasy-group":"machines","x-speakeasy-name-override":"cancelMachineDrain","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines drain cancellation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelMachinesMachineDrainResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"drainMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"drainMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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/DrainMachinesMachineRequest"}}}},"responses":{"200":{"description":"Machines drain request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrainMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}":{"delete":{"operationId":"removeMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"removeMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines remove request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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"}}}},"400":{"description":"Deployment is not ready or has no assigned manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The deployment manager is unavailable.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/target":{"get":{"operationId":"resolveCommandTarget","description":"Resolve which resource a command for this deployment would be addressed to, and how it would be delivered. Fails when the deployment has no command-capable resources, or more than one and no explicit target was named.","x-speakeasy-group":"commands","x-speakeasy-name-override":"resolveTarget","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","pattern":"dep_[0-9a-z]{28}$","description":"Deployment to resolve the target for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Deployment to resolve the target for","name":"deploymentId","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Explicit resource id to resolve; must be a command-capable resource"},"required":false,"description":"Explicit resource id to resolve; must be a command-capable resource","name":"target","in":"query"}],"responses":{"200":{"description":"Resolved command target.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvedCommandTarget"}}}},"404":{"description":"Deployment or target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"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/commands/{id}/dispatch":{"post":{"operationId":"dispatchCommand","description":"Atomically mark a command DISPATCHED unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"dispatch","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/DispatchCommandRequest"}}}},"responses":{"200":{"description":"Dispatch attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/complete":{"post":{"operationId":"completeCommand","description":"Atomically transition a command to a terminal state (SUCCEEDED, FAILED, or EXPIRED) unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"complete","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/CompleteCommandRequest"}}}},"responses":{"200":{"description":"Completion attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/increment-attempt":{"post":{"operationId":"incrementCommandAttempt","description":"Atomically increment the command's attempt counter and return the new value.","x-speakeasy-group":"commands","x-speakeasy-name-override":"incrementAttempt","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":"Attempt incremented.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncrementCommandAttemptResponse"}}}},"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"}}}}}}},"/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"required":false,"description":"Represents the target cloud platform.","name":"platform","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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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/integrations/slack/install-url":{"post":{"operationId":"slackIntegrationInstallUrl","description":"Generate the Slack OAuth consent URL for this workspace.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"installUrl","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":"OAuth URL the dashboard should redirect the user to.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallUrlResponse"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/status":{"get":{"operationId":"slackIntegrationStatus","description":"Return the Slack install for this workspace (if any).","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"status","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":"Status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackIntegrationStatus"}}}}}}},"/v1/integrations/slack/channels":{"get":{"operationId":"slackIntegrationChannels","description":"List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"listChannels","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":"Public channels.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelsResponse"}}}},"400":{"description":"Workspace not connected to Slack.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/notification-channel":{"put":{"operationId":"slackIntegrationSetNotificationChannel","description":"Configure which Slack channel receives ai-agent monitor reports.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"setNotificationChannel","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/SlackNotificationChannelRequest"}}}},"responses":{"200":{"description":"Channel saved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackNotificationChannelResponse"}}}},"400":{"description":"Not connected, or join failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/installation":{"delete":{"operationId":"slackIntegrationUninstall","description":"Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"uninstall","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":{"204":{"description":"Uninstalled."}}}},"/v1/agent-sessions":{"get":{"operationId":"listAgentSessions","description":"List ai-agent monitor sessions for this workspace. Newest first, capped at 50.","x-speakeasy-group":"agentSessions","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":"Sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionListResponse"}}}}}}},"/v1/agent-sessions/{id}":{"get":{"operationId":"getAgentSession","description":"Retrieve one ai-agent monitor session by id.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"get","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":"Session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionDetail"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/events":{"get":{"operationId":"listAgentSessionEvents","description":"Incrementally read a session's event log (steps, tool calls, report deltas, approvals, status transitions). Pass the previous response's `latestSeq` as `after` to fetch only new events.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"events","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"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0},"required":false,"name":"after","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Events after the cursor, oldest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionEventsResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/approve":{"post":{"operationId":"approveAgentSession","description":"Approve a halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"approve","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":"Already resumed / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"202":{"description":"Approved; resume enqueued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/stop":{"post":{"operationId":"stopAgentSession","description":"Stop (cancel) a running, queued, or halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies. Idempotent — stopping an already-terminal session is a 200 no-op.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"stop","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":"Already terminal / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"202":{"description":"Cancel accepted; session stopped.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","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/context":{"post":{"operationId":"syncContext","description":"Get computed deployment state and configuration for a manager-side operation without acquiring the deployment reconciliation lock.","x-speakeasy-group":"sync","x-speakeasy-name-override":"context","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/SyncContextRequest"}}}},"responses":{"200":{"description":"Computed deployment context returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"}}}},"404":{"description":"Deployment not found or not assigned to this manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to build deployment context.","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":{"get":{"operationId":"listInventory","x-speakeasy-group":"resources","x-speakeasy-name-override":"listInventory","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Unified managed and observed resource inventory rows.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"oneOf":[{"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"},"source":{"type":"string","enum":["managed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt","source","deploymentId","deploymentName"]},{"type":"object","properties":{"source":{"type":"string","enum":["observed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"rawKind":{"type":"string"},"alienResourceId":{"type":"string","nullable":true},"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":["source","deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","name","rawKind","alienResourceId","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}":{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"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"},"desiredImage":{"type":"string","nullable":true}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt","desiredImage"]},"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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","machines","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":{"WorkspaceInvitationPreview":{"type":"object","properties":{"kind":{"type":"string","enum":["email","link"]},"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])*$"},"logoUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name","logoUrl"]},"inviter":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"image":{"type":"string","nullable":true,"format":"uri"}},"required":["name","image"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"state":{"type":"string","enum":["active","accepted","expired","revoked"]},"emailHint":{"type":"string","nullable":true}},"required":["kind","workspace","inviter","role","expiresAt","state","emailHint"],"additionalProperties":false},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"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."},"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."},"requestId":{"type":"string","description":"Request ID echoed in the x-request-id response header and server logs."}},"required":["code","message","internal"]},"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},"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},"AcceptWorkspaceInvitationResponse":{"type":"object","properties":{"outcome":{"type":"string","enum":["joined","already-member"]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"workspaceName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["outcome","workspaceId","workspaceName","role"],"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"},"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},"AgentSettings":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"enabled":{"type":"boolean","description":"Workspace on/off switch for the ai-agent. When `false`, incoming triggers (release/deployment monitoring and Slack-invoked sessions) are rejected before any session runs. Defaults to `true`."},"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","enabled","debugPermissionMode","createdAt","updatedAt"],"additionalProperties":false},"UpdateWorkspaceSettingsRequest":{"type":"object","properties":{"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"enabled":{"type":"boolean","description":"Turn the ai-agent on (`true`) or off (`false`) for this workspace."}}},"WorkspaceInvitation":{"type":"object","properties":{"id":{"type":"string","pattern":"winv_[0-9a-zA-Z]{32}$","description":"Unique identifier for the workspace invitation.","example":"winv_DsgltMIFV0GmqtxV5NYTtrknrna"},"email":{"type":"string","format":"email"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"deliveryStatus":{"type":"string","enum":["pending","sent","failed"]},"expiresAt":{"type":"string","format":"date-time"},"lastSentAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","email","role","status","deliveryStatus","expiresAt","lastSentAt","createdAt","inviteUrl"],"additionalProperties":false},"WorkspaceInviteLink":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"wil_[0-9a-zA-Z]{40}$","description":"Unique identifier for the workspace invite link.","example":"wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"useCount":{"type":"integer","minimum":0},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","role","expiresAt","createdAt","useCount","lastUsedAt","inviteUrl"],"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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"]},"DeploymentLinkSetupResponse":{"type":"object","properties":{"activeRelease":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"version":{"type":"string","nullable":true},"stack":{"$ref":"#/components/schemas/StackByPlatform"}},"required":["id","version","stack"]},"visiblePackageTypes":{"type":"array","items":{"type":"string","enum":["cli","cloudformation","helm","operator-image","terraform"],"description":"Types of packages that can be built"}},"visibleSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}}},"required":["activeRelease","visiblePackageTypes","visibleSetupMethods"]},"StackByPlatform":{"type":"object","nullable":true,"properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"machines":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"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":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"]},"EnsureDeploymentGroupByNameRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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 for newly created groups"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."}},"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","machines","local","test"],"description":"Represents the target cloud platform."}},"allowedKubernetesBasePlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","on-prem"]},"minItems":1,"description":"Kubernetes base environments the recipient may target."},"allowedKubernetesClusterSources":{"type":"array","items":{"$ref":"#/components/schemas/KubernetesClusterSource"},"minItems":1,"description":"Whether recipients may create a cluster, use an existing cluster, or both."},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"KubernetesClusterSource":{"type":"string","enum":["create","existing"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","operator-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","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input. Null for release-less packages such as Operate Operator images.","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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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":["operator-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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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\")"},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain embedded into the Operator binary, if whitelabeled."}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["operator-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},"leaseExpiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiration of the current builder lease"},"buildPhase":{"type":"string","nullable":true,"enum":["building","publishing",null],"description":"Coarse package build phase"},"lastProgressAt":{"type":"string","format":"date-time","nullable":true,"description":"Last successful builder lease renewal or phase change"},"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","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"},"rollout":{"type":"object","nullable":true,"properties":{"updatedCount":{"type":"integer","description":"Deployments that finished updating to this release (excludes initial provisions)"},"pendingCount":{"type":"integer","description":"Deployments currently targeting this release but not yet running it"},"avgDurationMs":{"type":"number","nullable":true,"description":"Average time from release creation until a deployment finished updating, in milliseconds"}},"required":["updatedCount","pendingCount","avgDurationMs"],"description":"Rollout stats, included when ?include=rollout is used"}}}]},"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},"version":{"type":"string","minLength":1,"maxLength":256},"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","version","createdAt","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"version":{"type":"string","minLength":1,"maxLength":256},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"OperatorCapabilityReport":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128},"state":{"$ref":"#/components/schemas/OperatorCapabilityState"},"detail":{"type":"string","nullable":true,"maxLength":512}},"required":["key","state"]},"OperatorCapabilityState":{"type":"string","enum":["granted","denied","unavailable"]},"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"},"version":{"type":"string","minLength":1,"maxLength":256},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","version","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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"protocol":{"type":"string","enum":["http","tcp"]},"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535},"wildcardHost":{"type":"string"}},"required":["url","protocol","host","port"]},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Effective deployment model persisted for the deployment."},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment","deploymentModel"]},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"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."},"operatorScope":{"type":"string","minLength":1,"maxLength":512,"description":"Display-only scope reported by the Operator manifest."},"operatorPermission":{"type":"string","minLength":1,"maxLength":64,"description":"Display-only permission tier reported by the Operator manifest."},"initialDesiredRelease":{"type":"string","enum":["active","none"],"default":"active","description":"Desired-release selection for a new deployment. Use none to register an environment without initially requesting a release; later updates can assign one."}},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."}]},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"scheduleReconciliation":{"type":"boolean","default":false},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"DeploymentInputsResponse":{"type":"object","properties":{"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","machines","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."}},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"description":"Current non-secret input values. Secret values are never returned."},"providedInputIds":{"type":"array","items":{"type":"string"},"description":"Input IDs that currently have a value, including redacted secrets."}},"required":["inputs","values","providedInputIds"]},"UpdateDeploymentInputsResponse":{"allOf":[{"$ref":"#/components/schemas/DeploymentInputsResponse"},{"type":"object","properties":{"runtimeUpdateRequested":{"type":"boolean"}},"required":["runtimeUpdateRequested"]}]},"UpdateDeploymentInputsRequest":{"type":"object","properties":{"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"clearInputIds":{"type":"array","items":{"type":"string"},"default":[]}},"additionalProperties":false},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","machines","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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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."}},"required":["project"]},"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","waiting-for-machines","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"]},"PrepareOperatorManifestPackageResponse":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"PrepareOperatorManifestPackageRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}},"required":["project"],"additionalProperties":false},"RenderOperatorManifestResponse":{"type":"object","properties":{"manifest":{"type":"string","description":"Rendered multi-document Kubernetes manifest"},"applyCommand":{"type":"string","description":"kubectl command for applying the manifest from a file"},"filename":{"type":"string","description":"Suggested local filename"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL embedded in the manifest"},"imagePending":{"type":"boolean","description":"True when the operator image is still building. The manifest contains a placeholder image () and must not be applied yet — re-render once the operator-image package is ready to get the real image."}},"required":["manifest","applyCommand","filename","managerUrl","imagePending"]},"RenderOperatorManifestRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"format":{"type":"string","enum":["raw","helm"],"default":"raw","description":"raw: a kubectl-applyable manifest for one cluster. helm: a paste-into-your-chart template whose namespace and environment name come from Helm at install time."},"environmentName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Per-environment identity. Required for raw output, ignored for helm.","example":"my-app"},"namespace":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$","description":"Namespace to observe and install into. Omit for helm to use the release namespace."},"scope":{"type":"string","enum":["namespace","cluster"],"default":"namespace","description":"namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace."},"labelSelector":{"type":"string","minLength":1,"maxLength":256,"description":"Optional Kubernetes label selector narrowing what is managed, applied within the scope."},"permission":{"type":"string","enum":["observe"],"default":"observe","description":"Operator permission tier"},"operatorImagePackageId":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Ready operator-image package to use for the Operator image. If omitted, the latest ready operator-image package for the project is used.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group token embedded in the operator Secret"},"logCollector":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"description":"Enable the node log collector DaemonSet for raw pod logs."}},"required":["project","deploymentGroupToken"],"additionalProperties":false},"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"]},"EventListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Event"},{"type":"object","properties":{"releaseCreatedAt":{"type":"string","format":"date-time","description":"createdAt of the event's referenced release, included when ?include=releaseCreatedAt is used"}}}]},"ListMachinesJoinTokensResponse":{"type":"object","properties":{"tokens":{"type":"array","items":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"}}},"required":["tokens"]},"MachinesJoinTokenSummary":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"expiresAt":{"type":"string","nullable":true},"maxJoins":{"type":"integer","nullable":true},"joinCount":{"type":"integer"},"lastUsedAt":{"type":"string","nullable":true},"revokedAt":{"type":"string","nullable":true}},"required":["id","createdAt","createdBy","joinCount"]},"CreateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RotateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RevokeMachinesJoinTokenResponse":{"type":"object","properties":{"tokenId":{"type":"string"},"revoked":{"type":"boolean"}},"required":["tokenId","revoked"]},"ListMachinesInventoryResponse":{"type":"object","properties":{"machines":{"type":"array","items":{"$ref":"#/components/schemas/MachinesInventoryItem"}}},"required":["machines"]},"MachinesInventoryItem":{"type":"object","properties":{"machineId":{"type":"string"},"status":{"type":"string"},"capacityGroup":{"type":"string"},"zone":{"type":"string"},"cpu":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"memory":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"storage":{"allOf":[{"$ref":"#/components/schemas/MachinesCapacityMetric"}],"nullable":true},"drainBlockers":{"type":"array","items":{"$ref":"#/components/schemas/MachinesDrainBlocker"}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"overlayIp":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"horizondVersion":{"type":"string","nullable":true},"localOverrides":{"type":"array","items":{"$ref":"#/components/schemas/MachinesLocalOverrideObservation"}},"localOverridesObservedAt":{"type":"string","nullable":true},"replicaCount":{"type":"integer"}},"required":["machineId","status","capacityGroup","zone","cpu","memory","drainBlockers","drainForce","lastHeartbeat","localOverrides","replicaCount"]},"MachinesCapacityMetric":{"type":"object","properties":{"allocated":{"type":"number"},"systemReserve":{"type":"number"},"total":{"type":"number"}},"required":["allocated","systemReserve","total"]},"MachinesDrainBlocker":{"type":"object","properties":{"reason":{"type":"string"},"workloadId":{"type":"string","nullable":true},"workloadName":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true},"schedulingMode":{"type":"string","nullable":true},"state":{"type":"string","nullable":true}},"required":["reason"]},"MachinesLocalOverrideObservation":{"type":"object","properties":{"activeDigest":{"type":"string","nullable":true},"actor":{"type":"string","nullable":true},"baseAssignmentHash":{"type":"string"},"baseDigest":{"type":"string","nullable":true},"candidateDigest":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"failureCategory":{"type":"string","nullable":true},"fallbackDigest":{"type":"string","nullable":true},"forcedStop":{"type":"boolean","nullable":true},"healthySince":{"type":"string","nullable":true},"incidentId":{"type":"string","nullable":true},"lifecycle":{"type":"string"},"phaseStartedAt":{"type":"string","nullable":true},"replicaId":{"type":"string"},"workloadName":{"type":"string"}},"required":["baseAssignmentHash","lifecycle","replicaId","workloadName"]},"CancelMachinesMachineDrainResponse":{"type":"object","properties":{"machineId":{"type":"string"},"cancelled":{"type":"boolean"}},"required":["machineId","cancelled"]},"DrainMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"requested":{"type":"boolean"}},"required":["machineId","requested"]},"DrainMachinesMachineRequest":{"type":"object","properties":{"deadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"force":{"type":"boolean"}}},"RemoveMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"removed":{"type":"boolean"}},"required":["machineId","removed"]},"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","machines","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":"Delivery mode for this command (push/pull), derived from the target at creation time"},"target":{"type":"object","nullable":true,"properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to; null on commands created before target routing"},"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","target","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"},"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to"},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How the command is delivered to its target"}},"required":["id","projectId","deploymentModel","target","deliveryMode"]},"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"},"target":{"type":"string","maxLength":255,"description":"Resource id the command is addressed to. Required when the deployment has more than one command-capable resource."},"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"]},"ResolvedCommandTarget":{"type":"object","properties":{"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Identifies the specific resource a command is addressed to."},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How a command is delivered to its target resource.\n\nThis is a Commands-protocol-specific concept and is intentionally distinct\nfrom `DeploymentModel` (see `stack_settings.rs`), which governs the\ninfrastructure-level push/pull wiring for a deployment. Serialized\nlowercase for consistency with `CommandTargetType`."}},"required":["target","deliveryMode"]},"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"}}},"DispatchCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"DispatchCommandRequest":{"type":"object","properties":{"dispatchedAt":{"type":"string","format":"date-time","description":"When the command was dispatched"}},"required":["dispatchedAt"]},"CompleteCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"CompleteCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["SUCCEEDED","FAILED","EXPIRED"],"description":"Terminal state to transition to"},"completedAt":{"type":"string","format":"date-time","description":"When the 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"}},"required":["state","completedAt"]},"IncrementCommandAttemptResponse":{"type":"object","properties":{"attempt":{"type":"integer","description":"The attempt number after the increment"}},"required":["attempt"]},"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","machines","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","machines","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"},"pinnedSubdomain":{"type":"string","nullable":true}},"required":["id","name","pinnedSubdomain"],"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"requiresNetwork":{"type":"boolean","description":"Whether the stack contains resources that require cloud VPC networking"},"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","requiresNetwork","resourceCounts","publicEndpoints"]},"generatedDomain":{"type":"object","nullable":true,"properties":{"domain":{"type":"string"},"isSystem":{"type":"boolean"}},"required":["domain","isSystem"],"description":"Parent domain for generated deployment URLs. Chosen public subdomains are only allowed when isSystem is false."}},"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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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","machines","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"},"readiness":{"type":"object","properties":{"status":{"type":"string","enum":["ready","notReady","unknown"]},"checks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"string","enum":["passed","failed","warning","unknown"]},"message":{"type":"string"},"checkedAt":{"type":"string"}},"required":["code","status","message","checkedAt"]}}},"required":["status","checks"]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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"]},"SlackInstallUrlResponse":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"SlackIntegrationStatus":{"type":"object","properties":{"connected":{"type":"boolean"},"slackTeamId":{"type":"string","nullable":true},"slackTeamName":{"type":"string","nullable":true},"installedByUserId":{"type":"string","nullable":true},"installedAt":{"type":"string","nullable":true},"notificationChannelId":{"type":"string","nullable":true}},"required":["connected","slackTeamId","slackTeamName","installedByUserId","installedAt","notificationChannelId"]},"SlackChannelsResponse":{"type":"object","properties":{"channels":{"type":"array","items":{"$ref":"#/components/schemas/SlackChannel"}}},"required":["channels"]},"SlackChannel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isMember":{"type":"boolean"}},"required":["id","name","isMember"]},"SlackNotificationChannelResponse":{"type":"object","properties":{"notificationChannelId":{"type":"string","nullable":true},"warning":{"type":"string","nullable":true}},"required":["notificationChannelId","warning"]},"SlackNotificationChannelRequest":{"type":"object","properties":{"channelId":{"type":"string","nullable":true}},"required":["channelId"]},"AgentSessionListResponse":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionListItem"}}},"required":["sessions"]},"AgentSessionListItem":{"type":"object","properties":{"id":{"type":"string"},"triggerType":{"type":"string"},"subjectId":{"type":"string"},"subject":{"$ref":"#/components/schemas/AgentSessionSubject"},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","triggerType","subjectId","subject","status","createdAt","updatedAt"]},"AgentSessionSubject":{"type":"object","properties":{"deploymentName":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"releaseId":{"type":"string","nullable":true},"releaseCommitMessage":{"type":"string","nullable":true},"releaseCommitRef":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true}},"required":["deploymentName","deploymentGroupId","deploymentGroupName","releaseId","releaseCommitMessage","releaseCommitRef","projectId","projectName"]},"AgentSessionDetail":{"allOf":[{"$ref":"#/components/schemas/AgentSessionListItem"},{"type":"object","properties":{"resultText":{"type":"string","nullable":true},"toolNames":{"type":"array","nullable":true,"items":{"type":"string"}},"error":{"type":"string","nullable":true},"pendingApproval":{"type":"object","nullable":true,"properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["resultText","toolNames","error","pendingApproval"]}]},"AgentSessionEventsResponse":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionEvent"}},"latestSeq":{"type":"number"},"hasMore":{"type":"boolean"}},"required":["events","latestSeq","hasMore"]},"AgentSessionEvent":{"oneOf":[{"$ref":"#/components/schemas/AgentSessionStatusEvent"},{"$ref":"#/components/schemas/AgentSessionStepEvent"},{"$ref":"#/components/schemas/AgentSessionToolCallEvent"},{"$ref":"#/components/schemas/AgentSessionToolResultEvent"},{"$ref":"#/components/schemas/AgentSessionMarkdownEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalRequestedEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalGrantedEvent"},{"$ref":"#/components/schemas/AgentSessionRestartedEvent"},{"$ref":"#/components/schemas/AgentSessionEventsTruncatedEvent"}],"discriminator":{"propertyName":"type","mapping":{"status":"#/components/schemas/AgentSessionStatusEvent","step":"#/components/schemas/AgentSessionStepEvent","tool_call":"#/components/schemas/AgentSessionToolCallEvent","tool_result":"#/components/schemas/AgentSessionToolResultEvent","markdown":"#/components/schemas/AgentSessionMarkdownEvent","approval_requested":"#/components/schemas/AgentSessionApprovalRequestedEvent","approval_granted":"#/components/schemas/AgentSessionApprovalGrantedEvent","session_restarted":"#/components/schemas/AgentSessionRestartedEvent","events_truncated":"#/components/schemas/AgentSessionEventsTruncatedEvent"}}},"AgentSessionStatusEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["status"]},"payload":{"type":"object","properties":{"status":{"type":"string"},"error":{"type":"string"}},"required":["status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionStepEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["step"]},"payload":{"type":"object","properties":{"stepId":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["in_progress","complete","error"]}},"required":["stepId","title","status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolCallEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_call"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolResultEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_result"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string","nullable":true},"toolName":{"type":"string","nullable":true},"ok":{"type":"boolean"},"output":{"nullable":true}},"required":["toolCallId","toolName","ok"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionMarkdownEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["markdown"]},"payload":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalRequestedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_requested"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalGrantedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_granted"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"approvedByUserId":{"type":"string"},"approvedByName":{"type":"string","nullable":true},"source":{"type":"string","enum":["dashboard","slack"]}},"required":["approvalId","approvedByUserId","approvedByName","source"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionRestartedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["session_restarted"]},"payload":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionEventsTruncatedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["events_truncated"]},"payload":{"type":"object","properties":{"limit":{"type":"number"}},"required":["limit"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApproveResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"resumed":{"type":"boolean"}},"required":["jobId","status","resumed"]},"AgentSessionStopResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"canceled":{"type":"boolean"}},"required":["jobId","status","canceled"]},"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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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"},"SyncAcquireResponseDeployment":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the 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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"inputValues":{"type":"object","properties":{},"additionalProperties":{"nullable":true},"description":"Deployer-provided stack input values, keyed by input id. A resource\ngated with `.enabled(input)` and a Live lifecycle follows these\nvalues; a missing key falls back to the input's declared boolean\ndefault. Suppliers must not place secret-kind input values here:\nthis map serializes and debug-prints unredacted."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"]},"SyncContextRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the context. Manager-scoped tokens are constrained to their own manager ID."}]},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session","deploymentModel"],"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"inputValues":{"type":"object","properties":{},"additionalProperties":{"nullable":true},"description":"Deployer-provided stack input values, keyed by input id. A resource\ngated with `.enabled(input)` and a Live lifecycle follows these\nvalues; a missing key falls back to the input's declared boolean\ndefault. Suppliers must not place secret-kind input values here:\nthis map serializes and debug-prints unredacted."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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."},"resourceHeartbeats":{"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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."},"observedInventoryBatches":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"],"description":"Backend whose observer produced this snapshot."},"complete":{"type":"boolean","description":"Whether this batch is a complete replacement for the scope. Complete\nbatches tombstone previously observed rows in the same scope when they\nare absent from `resources`."},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"inventoryScope":{"type":"string","description":"Stable scope for the provider list operation that produced this batch."},"observedAt":{"type":"string","format":"date-time","description":"Time the inventory scope was observed."},"resources":{"type":"array","items":{"type":"object","properties":{"alienResourceId":{"type":"string","nullable":true},"attributes":{"type":"object","properties":{},"additionalProperties":{"nullable":true}},"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"counts":{"oneOf":[{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},{"nullable":true}]},"deploymentId":{"type":"string","nullable":true},"displayName":{"type":"string"},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerKind":{"type":"string","description":"Provider-native kind, such as `apps/v1/Deployment`,\n`AWS::S3::Bucket`, `storage.googleapis.com/Bucket`, or an Azure\nresource type."},"providerStale":{"type":"boolean"},"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"]}},"rawIdentity":{"type":"string","description":"Provider-native stable identity: Kubernetes object identity, cloud ARN,\nGCP full resource name, Azure resource id, etc."},"region":{"type":"string","nullable":true},"resourceTypeHint":{"oneOf":[{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},{"nullable":true}]},"scope":{"type":"string","nullable":true},"version":{"type":"string","nullable":true,"description":"Release/version identity observed from the provider resource, when available."}},"required":["displayName","health","lifecycle","partial","providerKind","providerStale","rawIdentity"]}},"sourceKind":{"type":"string","description":"Writer/source for this inventory pass, such as `operator` or\n`manager-observer`."}},"required":["backend","complete","controllerPlatform","inventoryScope","observedAt","resources","sourceKind"]},"description":"Observed raw-resource inventory batches read during this step."},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Operator-reported runtime capabilities."},"operatorVersion":{"type":"string","minLength":1,"maxLength":128,"description":"Operator binary version reported by the runtime."}},"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","machines","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","machines","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/invitations/{token}":{"get":{"operationId":"getWorkspaceInvitationPreview","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation preview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitationPreview"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/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/user/invitations/{token}/accept":{"post":{"operationId":"acceptWorkspaceInvitation","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptWorkspaceInvitationResponse"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation unavailable.","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/workspaces/{id}/settings":{"get":{"operationId":"getWorkspaceSettings","description":"Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"getSettings","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 ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspaceSettings","description":"Update the ai-agent settings for a workspace. Supports `debugPermissionMode` (`ask` requires human approval on every ai-agent debug command, `auto` runs them without asking) and `enabled` (`false` turns the ai-agent off so incoming triggers are rejected before any session runs).","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateSettings","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":{"$ref":"#/components/schemas/UpdateWorkspaceSettingsRequest"}}}},"responses":{"200":{"description":"Updated ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations":{"get":{"operationId":"listWorkspaceInvitations","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":"Pending invitations.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceInvitation"}}},"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":"createWorkspaceInvitation","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"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["email","role"]}}}},"responses":{"201":{"description":"Invitation created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"403":{"description":"Seat limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations/{invitationId}/resend":{"post":{"operationId":"resendWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation email sent again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"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}/invitations/{invitationId}":{"delete":{"operationId":"revokeWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation revoked."},"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}/invite-link":{"get":{"operationId":"getWorkspaceInviteLink","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":"Active invite link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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"}}}}}},"put":{"operationId":"createWorkspaceInviteLink","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":{"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["role"]}}}},"responses":{"200":{"description":"Invite link created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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":"revokeWorkspaceInviteLink","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":"Invite link revoked."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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}/deployment-link-setup":{"get":{"operationId":"getProjectDeploymentLinkSetup","description":"Get the active release stack and portal-visible setup availability for deployment-link configuration.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentLinkSetup","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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-link setup retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentLinkSetupResponse"}}}},"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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/by-name":{"put":{"operationId":"ensureDeploymentGroupByName","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and name","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/EnsureDeploymentGroupByNameRequest"}}}},"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"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/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"}}}},"400":{"description":"Deployment setup configuration is invalid","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}/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","enum":["cli","cloudformation","helm","operator-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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"200":{"description":"Existing deployment returned for idempotent deployment-group registration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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 a running or runtime-failed deployment. Running deployments start an update; failed deployments retry toward the selected 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 from the deployment's current lifecycle state.","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}/inputs":{"get":{"operationId":"getDeploymentInputs","description":"Get the active input definitions and current non-secret values for a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInputs","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 inputs returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInputsResponse"}}}},"403":{"description":"Insufficient permission to read deployment inputs.","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"}}}}}},"patch":{"operationId":"updateDeploymentInputs","description":"Update runtime stack inputs, rebuild their environment-variable mappings, and request a deployment update when runtime configuration changes.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateInputs","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/UpdateDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Deployment inputs saved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentInputsResponse"}}}},"400":{"description":"Input values are invalid for the deployment release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update deployment inputs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, project, 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}/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"]}}}},"400":{"description":"Environment variables are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update environment variables.","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}/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","machines","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/operator-manifests/prepare":{"post":{"operationId":"prepareOperatorManifestPackage","tags":["operator-manifests"],"summary":"Prepare the white-labeled Operator image for an Operate install","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/PrepareOperatorManifestPackageRequest"}}}},"responses":{"200":{"description":"Operator image package created or reused.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareOperatorManifestPackageResponse"}}}},"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/operator-manifests/render":{"post":{"operationId":"renderOperatorManifest","tags":["operator-manifests"],"summary":"Render a Kubernetes Operator manifest","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/RenderOperatorManifestRequest"}}}},"responses":{"200":{"description":"Operator manifest rendered successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderOperatorManifestResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Operator image package is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Invalid platform or manager configuration.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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":"array","items":{"type":"string","enum":["releaseCreatedAt"]},"description":"Optional fields to include: releaseCreatedAt"},"required":false,"description":"Optional fields to include: releaseCreatedAt","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 events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EventListItemResponse"},"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/machines/deployments/{id}/join-tokens":{"get":{"operationId":"listMachinesJoinTokens","x-speakeasy-group":"machines","x-speakeasy-name-override":"listJoinTokens","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":"Join tokens for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesJoinTokensResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"createMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"createJoinToken","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":"Newly minted Machines join token. Existing tokens keep working; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/rotate":{"post":{"operationId":"rotateMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"rotateJoinToken","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":"Rotated Machines join token. Revokes all existing tokens, then mints a new one; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/{tokenId}":{"delete":{"operationId":"revokeMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"revokeJoinToken","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":1},"required":true,"name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines join token revocation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/inventory":{"get":{"operationId":"listMachinesInventory","x-speakeasy-group":"machines","x-speakeasy-name-override":"listInventory","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":"Machine inventory for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesInventoryResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}/drain":{"delete":{"operationId":"cancelMachinesMachineDrain","x-speakeasy-group":"machines","x-speakeasy-name-override":"cancelMachineDrain","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines drain cancellation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelMachinesMachineDrainResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"drainMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"drainMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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/DrainMachinesMachineRequest"}}}},"responses":{"200":{"description":"Machines drain request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrainMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}":{"delete":{"operationId":"removeMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"removeMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines remove request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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"}}}},"400":{"description":"Deployment is not ready or has no assigned manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The deployment manager is unavailable.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/target":{"get":{"operationId":"resolveCommandTarget","description":"Resolve which resource a command for this deployment would be addressed to, and how it would be delivered. Fails when the deployment has no command-capable resources, or more than one and no explicit target was named.","x-speakeasy-group":"commands","x-speakeasy-name-override":"resolveTarget","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","pattern":"dep_[0-9a-z]{28}$","description":"Deployment to resolve the target for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Deployment to resolve the target for","name":"deploymentId","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Explicit resource id to resolve; must be a command-capable resource"},"required":false,"description":"Explicit resource id to resolve; must be a command-capable resource","name":"target","in":"query"}],"responses":{"200":{"description":"Resolved command target.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvedCommandTarget"}}}},"404":{"description":"Deployment or target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"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/commands/{id}/dispatch":{"post":{"operationId":"dispatchCommand","description":"Atomically mark a command DISPATCHED unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"dispatch","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/DispatchCommandRequest"}}}},"responses":{"200":{"description":"Dispatch attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/complete":{"post":{"operationId":"completeCommand","description":"Atomically transition a command to a terminal state (SUCCEEDED, FAILED, or EXPIRED) unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"complete","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/CompleteCommandRequest"}}}},"responses":{"200":{"description":"Completion attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/increment-attempt":{"post":{"operationId":"incrementCommandAttempt","description":"Atomically increment the command's attempt counter and return the new value.","x-speakeasy-group":"commands","x-speakeasy-name-override":"incrementAttempt","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":"Attempt incremented.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncrementCommandAttemptResponse"}}}},"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"}}}}}}},"/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"required":false,"description":"Represents the target cloud platform.","name":"platform","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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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/integrations/slack/install-url":{"post":{"operationId":"slackIntegrationInstallUrl","description":"Generate the Slack OAuth consent URL for this workspace.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"installUrl","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":"OAuth URL the dashboard should redirect the user to.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallUrlResponse"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/status":{"get":{"operationId":"slackIntegrationStatus","description":"Return the Slack install for this workspace (if any).","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"status","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":"Status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackIntegrationStatus"}}}}}}},"/v1/integrations/slack/channels":{"get":{"operationId":"slackIntegrationChannels","description":"List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"listChannels","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":"Public channels.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelsResponse"}}}},"400":{"description":"Workspace not connected to Slack.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/notification-channel":{"put":{"operationId":"slackIntegrationSetNotificationChannel","description":"Configure which Slack channel receives ai-agent monitor reports.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"setNotificationChannel","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/SlackNotificationChannelRequest"}}}},"responses":{"200":{"description":"Channel saved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackNotificationChannelResponse"}}}},"400":{"description":"Not connected, or join failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/installation":{"delete":{"operationId":"slackIntegrationUninstall","description":"Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"uninstall","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":{"204":{"description":"Uninstalled."}}}},"/v1/agent-sessions":{"get":{"operationId":"listAgentSessions","description":"List ai-agent monitor sessions for this workspace. Newest first, capped at 50.","x-speakeasy-group":"agentSessions","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":"Sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionListResponse"}}}}}}},"/v1/agent-sessions/{id}":{"get":{"operationId":"getAgentSession","description":"Retrieve one ai-agent monitor session by id.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"get","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":"Session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionDetail"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/events":{"get":{"operationId":"listAgentSessionEvents","description":"Incrementally read a session's event log (steps, tool calls, report deltas, approvals, status transitions). Pass the previous response's `latestSeq` as `after` to fetch only new events.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"events","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"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0},"required":false,"name":"after","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Events after the cursor, oldest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionEventsResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/approve":{"post":{"operationId":"approveAgentSession","description":"Approve a halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"approve","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":"Already resumed / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"202":{"description":"Approved; resume enqueued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/stop":{"post":{"operationId":"stopAgentSession","description":"Stop (cancel) a running, queued, or halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies. Idempotent — stopping an already-terminal session is a 200 no-op.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"stop","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":"Already terminal / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"202":{"description":"Cancel accepted; session stopped.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","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/context":{"post":{"operationId":"syncContext","description":"Get computed deployment state and configuration for a manager-side operation without acquiring the deployment reconciliation lock.","x-speakeasy-group":"sync","x-speakeasy-name-override":"context","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/SyncContextRequest"}}}},"responses":{"200":{"description":"Computed deployment context returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"}}}},"404":{"description":"Deployment not found or not assigned to this manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to build deployment context.","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":{"get":{"operationId":"listInventory","x-speakeasy-group":"resources","x-speakeasy-name-override":"listInventory","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Unified managed and observed resource inventory rows.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"oneOf":[{"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"},"source":{"type":"string","enum":["managed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt","source","deploymentId","deploymentName"]},{"type":"object","properties":{"source":{"type":"string","enum":["observed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"rawKind":{"type":"string"},"alienResourceId":{"type":"string","nullable":true},"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":["source","deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","name","rawKind","alienResourceId","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}":{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"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"},"desiredImage":{"type":"string","nullable":true}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt","desiredImage"]},"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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","machines","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 08c826ec3..e3768067b 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":{"WorkspaceInvitationPreview":{"type":"object","properties":{"kind":{"type":"string","enum":["email","link"]},"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])*$"},"logoUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name","logoUrl"]},"inviter":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"image":{"type":"string","nullable":true,"format":"uri"}},"required":["name","image"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"state":{"type":"string","enum":["active","accepted","expired","revoked"]},"emailHint":{"type":"string","nullable":true}},"required":["kind","workspace","inviter","role","expiresAt","state","emailHint"],"additionalProperties":false},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"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."},"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."},"requestId":{"type":"string","description":"Request ID echoed in the x-request-id response header and server logs."}},"required":["code","message","internal"]},"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},"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},"AcceptWorkspaceInvitationResponse":{"type":"object","properties":{"outcome":{"type":"string","enum":["joined","already-member"]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"workspaceName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["outcome","workspaceId","workspaceName","role"],"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"},"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},"AgentSettings":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"enabled":{"type":"boolean","description":"Workspace on/off switch for the ai-agent. When `false`, incoming triggers (release/deployment monitoring and Slack-invoked sessions) are rejected before any session runs. Defaults to `true`."},"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","enabled","debugPermissionMode","createdAt","updatedAt"],"additionalProperties":false},"UpdateWorkspaceSettingsRequest":{"type":"object","properties":{"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"enabled":{"type":"boolean","description":"Turn the ai-agent on (`true`) or off (`false`) for this workspace."}}},"WorkspaceInvitation":{"type":"object","properties":{"id":{"type":"string","pattern":"winv_[0-9a-zA-Z]{32}$","description":"Unique identifier for the workspace invitation.","example":"winv_DsgltMIFV0GmqtxV5NYTtrknrna"},"email":{"type":"string","format":"email"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"deliveryStatus":{"type":"string","enum":["pending","sent","failed"]},"expiresAt":{"type":"string","format":"date-time"},"lastSentAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","email","role","status","deliveryStatus","expiresAt","lastSentAt","createdAt","inviteUrl"],"additionalProperties":false},"WorkspaceInviteLink":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"wil_[0-9a-zA-Z]{40}$","description":"Unique identifier for the workspace invite link.","example":"wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"useCount":{"type":"integer","minimum":0},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","role","expiresAt","createdAt","useCount","lastUsedAt","inviteUrl"],"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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"]},"DeploymentLinkSetupResponse":{"type":"object","properties":{"activeRelease":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"version":{"type":"string","nullable":true},"stack":{"$ref":"#/components/schemas/StackByPlatform"}},"required":["id","version","stack"]},"visiblePackageTypes":{"type":"array","items":{"type":"string","enum":["cli","cloudformation","helm","operator-image","terraform"],"description":"Types of packages that can be built"}},"visibleSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}}},"required":["activeRelease","visiblePackageTypes","visibleSetupMethods"]},"StackByPlatform":{"type":"object","nullable":true,"properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"machines":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"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":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"]},"EnsureDeploymentGroupByNameRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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 for newly created groups"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."}},"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","machines","local","test"],"description":"Represents the target cloud platform."}},"allowedKubernetesBasePlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","on-prem"]},"minItems":1,"description":"Kubernetes base environments the recipient may target."},"allowedKubernetesClusterSources":{"type":"array","items":{"$ref":"#/components/schemas/KubernetesClusterSource"},"minItems":1,"description":"Whether recipients may create a cluster, use an existing cluster, or both."},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"KubernetesClusterSource":{"type":"string","enum":["create","existing"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","operator-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","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input. Null for release-less packages such as Operate Operator images.","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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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":["operator-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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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\")"},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain embedded into the Operator binary, if whitelabeled."}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["operator-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},"leaseExpiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiration of the current builder lease"},"buildPhase":{"type":"string","nullable":true,"enum":["building","publishing",null],"description":"Coarse package build phase"},"lastProgressAt":{"type":"string","format":"date-time","nullable":true,"description":"Last successful builder lease renewal or phase change"},"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","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"},"rollout":{"type":"object","nullable":true,"properties":{"updatedCount":{"type":"integer","description":"Deployments that finished updating to this release (excludes initial provisions)"},"pendingCount":{"type":"integer","description":"Deployments currently targeting this release but not yet running it"},"avgDurationMs":{"type":"number","nullable":true,"description":"Average time from release creation until a deployment finished updating, in milliseconds"}},"required":["updatedCount","pendingCount","avgDurationMs"],"description":"Rollout stats, included when ?include=rollout is used"}}}]},"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},"version":{"type":"string","minLength":1,"maxLength":256},"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","version","createdAt","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"version":{"type":"string","minLength":1,"maxLength":256},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"OperatorCapabilityReport":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128},"state":{"$ref":"#/components/schemas/OperatorCapabilityState"},"detail":{"type":"string","nullable":true,"maxLength":512}},"required":["key","state"]},"OperatorCapabilityState":{"type":"string","enum":["granted","denied","unavailable"]},"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"},"version":{"type":"string","minLength":1,"maxLength":256},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","version","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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"protocol":{"type":"string","enum":["http","tcp"]},"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535},"wildcardHost":{"type":"string"}},"required":["url","protocol","host","port"]},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Effective deployment model persisted for the deployment."},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment","deploymentModel"]},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"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."},"operatorScope":{"type":"string","minLength":1,"maxLength":512,"description":"Display-only scope reported by the Operator manifest."},"operatorPermission":{"type":"string","minLength":1,"maxLength":64,"description":"Display-only permission tier reported by the Operator manifest."},"initialDesiredRelease":{"type":"string","enum":["active","none"],"default":"active","description":"Desired-release selection for a new deployment. Use none to register an environment without initially requesting a release; later updates can assign one."}},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."}]},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"scheduleReconciliation":{"type":"boolean","default":false},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"DeploymentInputsResponse":{"type":"object","properties":{"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","machines","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."}},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"description":"Current non-secret input values. Secret values are never returned."},"providedInputIds":{"type":"array","items":{"type":"string"},"description":"Input IDs that currently have a value, including redacted secrets."}},"required":["inputs","values","providedInputIds"]},"UpdateDeploymentInputsResponse":{"allOf":[{"$ref":"#/components/schemas/DeploymentInputsResponse"},{"type":"object","properties":{"runtimeUpdateRequested":{"type":"boolean"}},"required":["runtimeUpdateRequested"]}]},"UpdateDeploymentInputsRequest":{"type":"object","properties":{"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"clearInputIds":{"type":"array","items":{"type":"string"},"default":[]}},"additionalProperties":false},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","machines","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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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."}},"required":["project"]},"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","waiting-for-machines","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"]},"PrepareOperatorManifestPackageResponse":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"PrepareOperatorManifestPackageRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}},"required":["project"],"additionalProperties":false},"RenderOperatorManifestResponse":{"type":"object","properties":{"manifest":{"type":"string","description":"Rendered multi-document Kubernetes manifest"},"applyCommand":{"type":"string","description":"kubectl command for applying the manifest from a file"},"filename":{"type":"string","description":"Suggested local filename"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL embedded in the manifest"},"imagePending":{"type":"boolean","description":"True when the operator image is still building. The manifest contains a placeholder image () and must not be applied yet — re-render once the operator-image package is ready to get the real image."}},"required":["manifest","applyCommand","filename","managerUrl","imagePending"]},"RenderOperatorManifestRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"format":{"type":"string","enum":["raw","helm"],"default":"raw","description":"raw: a kubectl-applyable manifest for one cluster. helm: a paste-into-your-chart template whose namespace and environment name come from Helm at install time."},"environmentName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Per-environment identity. Required for raw output, ignored for helm.","example":"my-app"},"namespace":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$","description":"Namespace to observe and install into. Omit for helm to use the release namespace."},"scope":{"type":"string","enum":["namespace","cluster"],"default":"namespace","description":"namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace."},"labelSelector":{"type":"string","minLength":1,"maxLength":256,"description":"Optional Kubernetes label selector narrowing what is managed, applied within the scope."},"permission":{"type":"string","enum":["observe"],"default":"observe","description":"Operator permission tier"},"operatorImagePackageId":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Ready operator-image package to use for the Operator image. If omitted, the latest ready operator-image package for the project is used.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group token embedded in the operator Secret"},"logCollector":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"description":"Enable the node log collector DaemonSet for raw pod logs."}},"required":["project","deploymentGroupToken"],"additionalProperties":false},"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"]},"EventListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Event"},{"type":"object","properties":{"releaseCreatedAt":{"type":"string","format":"date-time","description":"createdAt of the event's referenced release, included when ?include=releaseCreatedAt is used"}}}]},"ListMachinesJoinTokensResponse":{"type":"object","properties":{"tokens":{"type":"array","items":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"}}},"required":["tokens"]},"MachinesJoinTokenSummary":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"expiresAt":{"type":"string","nullable":true},"maxJoins":{"type":"integer","nullable":true},"joinCount":{"type":"integer"},"lastUsedAt":{"type":"string","nullable":true},"revokedAt":{"type":"string","nullable":true}},"required":["id","createdAt","createdBy","joinCount"]},"CreateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RotateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RevokeMachinesJoinTokenResponse":{"type":"object","properties":{"tokenId":{"type":"string"},"revoked":{"type":"boolean"}},"required":["tokenId","revoked"]},"ListMachinesInventoryResponse":{"type":"object","properties":{"machines":{"type":"array","items":{"$ref":"#/components/schemas/MachinesInventoryItem"}}},"required":["machines"]},"MachinesInventoryItem":{"type":"object","properties":{"machineId":{"type":"string"},"status":{"type":"string"},"capacityGroup":{"type":"string"},"zone":{"type":"string"},"cpu":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"memory":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"storage":{"allOf":[{"$ref":"#/components/schemas/MachinesCapacityMetric"}],"nullable":true},"drainBlockers":{"type":"array","items":{"$ref":"#/components/schemas/MachinesDrainBlocker"}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"overlayIp":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"horizondVersion":{"type":"string","nullable":true},"localOverrides":{"type":"array","items":{"$ref":"#/components/schemas/MachinesLocalOverrideObservation"}},"localOverridesObservedAt":{"type":"string","nullable":true},"replicaCount":{"type":"integer"}},"required":["machineId","status","capacityGroup","zone","cpu","memory","drainBlockers","drainForce","lastHeartbeat","localOverrides","replicaCount"]},"MachinesCapacityMetric":{"type":"object","properties":{"allocated":{"type":"number"},"systemReserve":{"type":"number"},"total":{"type":"number"}},"required":["allocated","systemReserve","total"]},"MachinesDrainBlocker":{"type":"object","properties":{"reason":{"type":"string"},"workloadId":{"type":"string","nullable":true},"workloadName":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true},"schedulingMode":{"type":"string","nullable":true},"state":{"type":"string","nullable":true}},"required":["reason"]},"MachinesLocalOverrideObservation":{"type":"object","properties":{"activeDigest":{"type":"string","nullable":true},"actor":{"type":"string","nullable":true},"baseAssignmentHash":{"type":"string"},"baseDigest":{"type":"string","nullable":true},"candidateDigest":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"failureCategory":{"type":"string","nullable":true},"fallbackDigest":{"type":"string","nullable":true},"forcedStop":{"type":"boolean","nullable":true},"healthySince":{"type":"string","nullable":true},"incidentId":{"type":"string","nullable":true},"lifecycle":{"type":"string"},"phaseStartedAt":{"type":"string","nullable":true},"replicaId":{"type":"string"},"workloadName":{"type":"string"}},"required":["baseAssignmentHash","lifecycle","replicaId","workloadName"]},"CancelMachinesMachineDrainResponse":{"type":"object","properties":{"machineId":{"type":"string"},"cancelled":{"type":"boolean"}},"required":["machineId","cancelled"]},"DrainMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"requested":{"type":"boolean"}},"required":["machineId","requested"]},"DrainMachinesMachineRequest":{"type":"object","properties":{"deadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"force":{"type":"boolean"}}},"RemoveMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"removed":{"type":"boolean"}},"required":["machineId","removed"]},"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","machines","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":"Delivery mode for this command (push/pull), derived from the target at creation time"},"target":{"type":"object","nullable":true,"properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to; null on commands created before target routing"},"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","target","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"},"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to"},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How the command is delivered to its target"}},"required":["id","projectId","deploymentModel","target","deliveryMode"]},"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"},"target":{"type":"string","maxLength":255,"description":"Resource id the command is addressed to. Required when the deployment has more than one command-capable resource."},"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"]},"ResolvedCommandTarget":{"type":"object","properties":{"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Identifies the specific resource a command is addressed to."},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How a command is delivered to its target resource.\n\nThis is a Commands-protocol-specific concept and is intentionally distinct\nfrom `DeploymentModel` (see `stack_settings.rs`), which governs the\ninfrastructure-level push/pull wiring for a deployment. Serialized\nlowercase for consistency with `CommandTargetType`."}},"required":["target","deliveryMode"]},"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"}}},"DispatchCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"DispatchCommandRequest":{"type":"object","properties":{"dispatchedAt":{"type":"string","format":"date-time","description":"When the command was dispatched"}},"required":["dispatchedAt"]},"CompleteCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"CompleteCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["SUCCEEDED","FAILED","EXPIRED"],"description":"Terminal state to transition to"},"completedAt":{"type":"string","format":"date-time","description":"When the 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"}},"required":["state","completedAt"]},"IncrementCommandAttemptResponse":{"type":"object","properties":{"attempt":{"type":"integer","description":"The attempt number after the increment"}},"required":["attempt"]},"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","machines","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","machines","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"},"pinnedSubdomain":{"type":"string","nullable":true}},"required":["id","name","pinnedSubdomain"],"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"requiresNetwork":{"type":"boolean","description":"Whether the stack contains resources that require cloud VPC networking"},"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","requiresNetwork","resourceCounts","publicEndpoints"]},"generatedDomain":{"type":"object","nullable":true,"properties":{"domain":{"type":"string"},"isSystem":{"type":"boolean"}},"required":["domain","isSystem"],"description":"Parent domain for generated deployment URLs. Chosen public subdomains are only allowed when isSystem is false."}},"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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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","machines","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"},"readiness":{"type":"object","properties":{"status":{"type":"string","enum":["ready","notReady","unknown"]},"checks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"string","enum":["passed","failed","warning","unknown"]},"message":{"type":"string"},"checkedAt":{"type":"string"}},"required":["code","status","message","checkedAt"]}}},"required":["status","checks"]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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"]},"SlackInstallUrlResponse":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"SlackIntegrationStatus":{"type":"object","properties":{"connected":{"type":"boolean"},"slackTeamId":{"type":"string","nullable":true},"slackTeamName":{"type":"string","nullable":true},"installedByUserId":{"type":"string","nullable":true},"installedAt":{"type":"string","nullable":true},"notificationChannelId":{"type":"string","nullable":true}},"required":["connected","slackTeamId","slackTeamName","installedByUserId","installedAt","notificationChannelId"]},"SlackChannelsResponse":{"type":"object","properties":{"channels":{"type":"array","items":{"$ref":"#/components/schemas/SlackChannel"}}},"required":["channels"]},"SlackChannel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isMember":{"type":"boolean"}},"required":["id","name","isMember"]},"SlackNotificationChannelResponse":{"type":"object","properties":{"notificationChannelId":{"type":"string","nullable":true},"warning":{"type":"string","nullable":true}},"required":["notificationChannelId","warning"]},"SlackNotificationChannelRequest":{"type":"object","properties":{"channelId":{"type":"string","nullable":true}},"required":["channelId"]},"AgentSessionListResponse":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionListItem"}}},"required":["sessions"]},"AgentSessionListItem":{"type":"object","properties":{"id":{"type":"string"},"triggerType":{"type":"string"},"subjectId":{"type":"string"},"subject":{"$ref":"#/components/schemas/AgentSessionSubject"},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","triggerType","subjectId","subject","status","createdAt","updatedAt"]},"AgentSessionSubject":{"type":"object","properties":{"deploymentName":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"releaseId":{"type":"string","nullable":true},"releaseCommitMessage":{"type":"string","nullable":true},"releaseCommitRef":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true}},"required":["deploymentName","deploymentGroupId","deploymentGroupName","releaseId","releaseCommitMessage","releaseCommitRef","projectId","projectName"]},"AgentSessionDetail":{"allOf":[{"$ref":"#/components/schemas/AgentSessionListItem"},{"type":"object","properties":{"resultText":{"type":"string","nullable":true},"toolNames":{"type":"array","nullable":true,"items":{"type":"string"}},"error":{"type":"string","nullable":true},"pendingApproval":{"type":"object","nullable":true,"properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["resultText","toolNames","error","pendingApproval"]}]},"AgentSessionEventsResponse":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionEvent"}},"latestSeq":{"type":"number"},"hasMore":{"type":"boolean"}},"required":["events","latestSeq","hasMore"]},"AgentSessionEvent":{"oneOf":[{"$ref":"#/components/schemas/AgentSessionStatusEvent"},{"$ref":"#/components/schemas/AgentSessionStepEvent"},{"$ref":"#/components/schemas/AgentSessionToolCallEvent"},{"$ref":"#/components/schemas/AgentSessionToolResultEvent"},{"$ref":"#/components/schemas/AgentSessionMarkdownEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalRequestedEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalGrantedEvent"},{"$ref":"#/components/schemas/AgentSessionRestartedEvent"},{"$ref":"#/components/schemas/AgentSessionEventsTruncatedEvent"}],"discriminator":{"propertyName":"type","mapping":{"status":"#/components/schemas/AgentSessionStatusEvent","step":"#/components/schemas/AgentSessionStepEvent","tool_call":"#/components/schemas/AgentSessionToolCallEvent","tool_result":"#/components/schemas/AgentSessionToolResultEvent","markdown":"#/components/schemas/AgentSessionMarkdownEvent","approval_requested":"#/components/schemas/AgentSessionApprovalRequestedEvent","approval_granted":"#/components/schemas/AgentSessionApprovalGrantedEvent","session_restarted":"#/components/schemas/AgentSessionRestartedEvent","events_truncated":"#/components/schemas/AgentSessionEventsTruncatedEvent"}}},"AgentSessionStatusEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["status"]},"payload":{"type":"object","properties":{"status":{"type":"string"},"error":{"type":"string"}},"required":["status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionStepEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["step"]},"payload":{"type":"object","properties":{"stepId":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["in_progress","complete","error"]}},"required":["stepId","title","status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolCallEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_call"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolResultEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_result"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string","nullable":true},"toolName":{"type":"string","nullable":true},"ok":{"type":"boolean"},"output":{"nullable":true}},"required":["toolCallId","toolName","ok"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionMarkdownEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["markdown"]},"payload":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalRequestedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_requested"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalGrantedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_granted"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"approvedByUserId":{"type":"string"},"approvedByName":{"type":"string","nullable":true},"source":{"type":"string","enum":["dashboard","slack"]}},"required":["approvalId","approvedByUserId","approvedByName","source"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionRestartedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["session_restarted"]},"payload":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionEventsTruncatedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["events_truncated"]},"payload":{"type":"object","properties":{"limit":{"type":"number"}},"required":["limit"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApproveResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"resumed":{"type":"boolean"}},"required":["jobId","status","resumed"]},"AgentSessionStopResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"canceled":{"type":"boolean"}},"required":["jobId","status","canceled"]},"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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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"},"SyncAcquireResponseDeployment":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the 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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"]},"SyncContextRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the context. Manager-scoped tokens are constrained to their own manager ID."}]},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session","deploymentModel"],"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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."},"resourceHeartbeats":{"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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."},"observedInventoryBatches":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"],"description":"Backend whose observer produced this snapshot."},"complete":{"type":"boolean","description":"Whether this batch is a complete replacement for the scope. Complete\nbatches tombstone previously observed rows in the same scope when they\nare absent from `resources`."},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"inventoryScope":{"type":"string","description":"Stable scope for the provider list operation that produced this batch."},"observedAt":{"type":"string","format":"date-time","description":"Time the inventory scope was observed."},"resources":{"type":"array","items":{"type":"object","properties":{"alienResourceId":{"type":"string","nullable":true},"attributes":{"type":"object","properties":{},"additionalProperties":{"nullable":true}},"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"counts":{"oneOf":[{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},{"nullable":true}]},"deploymentId":{"type":"string","nullable":true},"displayName":{"type":"string"},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerKind":{"type":"string","description":"Provider-native kind, such as `apps/v1/Deployment`,\n`AWS::S3::Bucket`, `storage.googleapis.com/Bucket`, or an Azure\nresource type."},"providerStale":{"type":"boolean"},"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"]}},"rawIdentity":{"type":"string","description":"Provider-native stable identity: Kubernetes object identity, cloud ARN,\nGCP full resource name, Azure resource id, etc."},"region":{"type":"string","nullable":true},"resourceTypeHint":{"oneOf":[{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},{"nullable":true}]},"scope":{"type":"string","nullable":true},"version":{"type":"string","nullable":true,"description":"Release/version identity observed from the provider resource, when available."}},"required":["displayName","health","lifecycle","partial","providerKind","providerStale","rawIdentity"]}},"sourceKind":{"type":"string","description":"Writer/source for this inventory pass, such as `operator` or\n`manager-observer`."}},"required":["backend","complete","controllerPlatform","inventoryScope","observedAt","resources","sourceKind"]},"description":"Observed raw-resource inventory batches read during this step."},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Operator-reported runtime capabilities."},"operatorVersion":{"type":"string","minLength":1,"maxLength":128,"description":"Operator binary version reported by the runtime."}},"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","machines","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","machines","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/invitations/{token}":{"get":{"operationId":"getWorkspaceInvitationPreview","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation preview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitationPreview"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/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/user/invitations/{token}/accept":{"post":{"operationId":"acceptWorkspaceInvitation","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptWorkspaceInvitationResponse"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation unavailable.","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/workspaces/{id}/settings":{"get":{"operationId":"getWorkspaceSettings","description":"Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"getSettings","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 ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspaceSettings","description":"Update the ai-agent settings for a workspace. Supports `debugPermissionMode` (`ask` requires human approval on every ai-agent debug command, `auto` runs them without asking) and `enabled` (`false` turns the ai-agent off so incoming triggers are rejected before any session runs).","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateSettings","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":{"$ref":"#/components/schemas/UpdateWorkspaceSettingsRequest"}}}},"responses":{"200":{"description":"Updated ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations":{"get":{"operationId":"listWorkspaceInvitations","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":"Pending invitations.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceInvitation"}}},"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":"createWorkspaceInvitation","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"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["email","role"]}}}},"responses":{"201":{"description":"Invitation created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"403":{"description":"Seat limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations/{invitationId}/resend":{"post":{"operationId":"resendWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation email sent again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"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}/invitations/{invitationId}":{"delete":{"operationId":"revokeWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation revoked."},"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}/invite-link":{"get":{"operationId":"getWorkspaceInviteLink","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":"Active invite link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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"}}}}}},"put":{"operationId":"createWorkspaceInviteLink","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":{"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["role"]}}}},"responses":{"200":{"description":"Invite link created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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":"revokeWorkspaceInviteLink","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":"Invite link revoked."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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}/deployment-link-setup":{"get":{"operationId":"getProjectDeploymentLinkSetup","description":"Get the active release stack and portal-visible setup availability for deployment-link configuration.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentLinkSetup","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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-link setup retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentLinkSetupResponse"}}}},"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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/by-name":{"put":{"operationId":"ensureDeploymentGroupByName","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and name","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/EnsureDeploymentGroupByNameRequest"}}}},"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"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/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"}}}},"400":{"description":"Deployment setup configuration is invalid","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}/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","enum":["cli","cloudformation","helm","operator-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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"200":{"description":"Existing deployment returned for idempotent deployment-group registration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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 a running or runtime-failed deployment. Running deployments start an update; failed deployments retry toward the selected 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 from the deployment's current lifecycle state.","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}/inputs":{"get":{"operationId":"getDeploymentInputs","description":"Get the active input definitions and current non-secret values for a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInputs","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 inputs returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInputsResponse"}}}},"403":{"description":"Insufficient permission to read deployment inputs.","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"}}}}}},"patch":{"operationId":"updateDeploymentInputs","description":"Update runtime stack inputs, rebuild their environment-variable mappings, and request a deployment update when runtime configuration changes.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateInputs","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/UpdateDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Deployment inputs saved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentInputsResponse"}}}},"400":{"description":"Input values are invalid for the deployment release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update deployment inputs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, project, 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}/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"]}}}},"400":{"description":"Environment variables are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update environment variables.","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}/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","machines","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/operator-manifests/prepare":{"post":{"operationId":"prepareOperatorManifestPackage","tags":["operator-manifests"],"summary":"Prepare the white-labeled Operator image for an Operate install","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/PrepareOperatorManifestPackageRequest"}}}},"responses":{"200":{"description":"Operator image package created or reused.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareOperatorManifestPackageResponse"}}}},"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/operator-manifests/render":{"post":{"operationId":"renderOperatorManifest","tags":["operator-manifests"],"summary":"Render a Kubernetes Operator manifest","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/RenderOperatorManifestRequest"}}}},"responses":{"200":{"description":"Operator manifest rendered successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderOperatorManifestResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Operator image package is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Invalid platform or manager configuration.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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":"array","items":{"type":"string","enum":["releaseCreatedAt"]},"description":"Optional fields to include: releaseCreatedAt"},"required":false,"description":"Optional fields to include: releaseCreatedAt","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 events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EventListItemResponse"},"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/machines/deployments/{id}/join-tokens":{"get":{"operationId":"listMachinesJoinTokens","x-speakeasy-group":"machines","x-speakeasy-name-override":"listJoinTokens","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":"Join tokens for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesJoinTokensResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"createMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"createJoinToken","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":"Newly minted Machines join token. Existing tokens keep working; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/rotate":{"post":{"operationId":"rotateMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"rotateJoinToken","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":"Rotated Machines join token. Revokes all existing tokens, then mints a new one; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/{tokenId}":{"delete":{"operationId":"revokeMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"revokeJoinToken","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":1},"required":true,"name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines join token revocation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/inventory":{"get":{"operationId":"listMachinesInventory","x-speakeasy-group":"machines","x-speakeasy-name-override":"listInventory","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":"Machine inventory for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesInventoryResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}/drain":{"delete":{"operationId":"cancelMachinesMachineDrain","x-speakeasy-group":"machines","x-speakeasy-name-override":"cancelMachineDrain","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines drain cancellation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelMachinesMachineDrainResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"drainMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"drainMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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/DrainMachinesMachineRequest"}}}},"responses":{"200":{"description":"Machines drain request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrainMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}":{"delete":{"operationId":"removeMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"removeMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines remove request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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"}}}},"400":{"description":"Deployment is not ready or has no assigned manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The deployment manager is unavailable.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/target":{"get":{"operationId":"resolveCommandTarget","description":"Resolve which resource a command for this deployment would be addressed to, and how it would be delivered. Fails when the deployment has no command-capable resources, or more than one and no explicit target was named.","x-speakeasy-group":"commands","x-speakeasy-name-override":"resolveTarget","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","pattern":"dep_[0-9a-z]{28}$","description":"Deployment to resolve the target for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Deployment to resolve the target for","name":"deploymentId","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Explicit resource id to resolve; must be a command-capable resource"},"required":false,"description":"Explicit resource id to resolve; must be a command-capable resource","name":"target","in":"query"}],"responses":{"200":{"description":"Resolved command target.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvedCommandTarget"}}}},"404":{"description":"Deployment or target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"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/commands/{id}/dispatch":{"post":{"operationId":"dispatchCommand","description":"Atomically mark a command DISPATCHED unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"dispatch","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/DispatchCommandRequest"}}}},"responses":{"200":{"description":"Dispatch attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/complete":{"post":{"operationId":"completeCommand","description":"Atomically transition a command to a terminal state (SUCCEEDED, FAILED, or EXPIRED) unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"complete","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/CompleteCommandRequest"}}}},"responses":{"200":{"description":"Completion attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/increment-attempt":{"post":{"operationId":"incrementCommandAttempt","description":"Atomically increment the command's attempt counter and return the new value.","x-speakeasy-group":"commands","x-speakeasy-name-override":"incrementAttempt","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":"Attempt incremented.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncrementCommandAttemptResponse"}}}},"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"}}}}}}},"/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"required":false,"description":"Represents the target cloud platform.","name":"platform","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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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/integrations/slack/install-url":{"post":{"operationId":"slackIntegrationInstallUrl","description":"Generate the Slack OAuth consent URL for this workspace.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"installUrl","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":"OAuth URL the dashboard should redirect the user to.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallUrlResponse"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/status":{"get":{"operationId":"slackIntegrationStatus","description":"Return the Slack install for this workspace (if any).","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"status","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":"Status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackIntegrationStatus"}}}}}}},"/v1/integrations/slack/channels":{"get":{"operationId":"slackIntegrationChannels","description":"List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"listChannels","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":"Public channels.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelsResponse"}}}},"400":{"description":"Workspace not connected to Slack.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/notification-channel":{"put":{"operationId":"slackIntegrationSetNotificationChannel","description":"Configure which Slack channel receives ai-agent monitor reports.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"setNotificationChannel","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/SlackNotificationChannelRequest"}}}},"responses":{"200":{"description":"Channel saved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackNotificationChannelResponse"}}}},"400":{"description":"Not connected, or join failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/installation":{"delete":{"operationId":"slackIntegrationUninstall","description":"Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"uninstall","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":{"204":{"description":"Uninstalled."}}}},"/v1/agent-sessions":{"get":{"operationId":"listAgentSessions","description":"List ai-agent monitor sessions for this workspace. Newest first, capped at 50.","x-speakeasy-group":"agentSessions","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":"Sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionListResponse"}}}}}}},"/v1/agent-sessions/{id}":{"get":{"operationId":"getAgentSession","description":"Retrieve one ai-agent monitor session by id.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"get","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":"Session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionDetail"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/events":{"get":{"operationId":"listAgentSessionEvents","description":"Incrementally read a session's event log (steps, tool calls, report deltas, approvals, status transitions). Pass the previous response's `latestSeq` as `after` to fetch only new events.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"events","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"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0},"required":false,"name":"after","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Events after the cursor, oldest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionEventsResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/approve":{"post":{"operationId":"approveAgentSession","description":"Approve a halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"approve","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":"Already resumed / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"202":{"description":"Approved; resume enqueued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/stop":{"post":{"operationId":"stopAgentSession","description":"Stop (cancel) a running, queued, or halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies. Idempotent — stopping an already-terminal session is a 200 no-op.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"stop","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":"Already terminal / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"202":{"description":"Cancel accepted; session stopped.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","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/context":{"post":{"operationId":"syncContext","description":"Get computed deployment state and configuration for a manager-side operation without acquiring the deployment reconciliation lock.","x-speakeasy-group":"sync","x-speakeasy-name-override":"context","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/SyncContextRequest"}}}},"responses":{"200":{"description":"Computed deployment context returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"}}}},"404":{"description":"Deployment not found or not assigned to this manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to build deployment context.","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":{"get":{"operationId":"listInventory","x-speakeasy-group":"resources","x-speakeasy-name-override":"listInventory","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Unified managed and observed resource inventory rows.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"oneOf":[{"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"},"source":{"type":"string","enum":["managed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt","source","deploymentId","deploymentName"]},{"type":"object","properties":{"source":{"type":"string","enum":["observed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"rawKind":{"type":"string"},"alienResourceId":{"type":"string","nullable":true},"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":["source","deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","name","rawKind","alienResourceId","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}":{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"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"},"desiredImage":{"type":"string","nullable":true}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt","desiredImage"]},"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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","machines","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":{"WorkspaceInvitationPreview":{"type":"object","properties":{"kind":{"type":"string","enum":["email","link"]},"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])*$"},"logoUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name","logoUrl"]},"inviter":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"image":{"type":"string","nullable":true,"format":"uri"}},"required":["name","image"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"state":{"type":"string","enum":["active","accepted","expired","revoked"]},"emailHint":{"type":"string","nullable":true}},"required":["kind","workspace","inviter","role","expiresAt","state","emailHint"],"additionalProperties":false},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"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."},"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."},"requestId":{"type":"string","description":"Request ID echoed in the x-request-id response header and server logs."}},"required":["code","message","internal"]},"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},"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},"AcceptWorkspaceInvitationResponse":{"type":"object","properties":{"outcome":{"type":"string","enum":["joined","already-member"]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"workspaceName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["outcome","workspaceId","workspaceName","role"],"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"},"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},"AgentSettings":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"enabled":{"type":"boolean","description":"Workspace on/off switch for the ai-agent. When `false`, incoming triggers (release/deployment monitoring and Slack-invoked sessions) are rejected before any session runs. Defaults to `true`."},"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","enabled","debugPermissionMode","createdAt","updatedAt"],"additionalProperties":false},"UpdateWorkspaceSettingsRequest":{"type":"object","properties":{"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"enabled":{"type":"boolean","description":"Turn the ai-agent on (`true`) or off (`false`) for this workspace."}}},"WorkspaceInvitation":{"type":"object","properties":{"id":{"type":"string","pattern":"winv_[0-9a-zA-Z]{32}$","description":"Unique identifier for the workspace invitation.","example":"winv_DsgltMIFV0GmqtxV5NYTtrknrna"},"email":{"type":"string","format":"email"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"deliveryStatus":{"type":"string","enum":["pending","sent","failed"]},"expiresAt":{"type":"string","format":"date-time"},"lastSentAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","email","role","status","deliveryStatus","expiresAt","lastSentAt","createdAt","inviteUrl"],"additionalProperties":false},"WorkspaceInviteLink":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"wil_[0-9a-zA-Z]{40}$","description":"Unique identifier for the workspace invite link.","example":"wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"useCount":{"type":"integer","minimum":0},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","role","expiresAt","createdAt","useCount","lastUsedAt","inviteUrl"],"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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"]},"DeploymentLinkSetupResponse":{"type":"object","properties":{"activeRelease":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"version":{"type":"string","nullable":true},"stack":{"$ref":"#/components/schemas/StackByPlatform"}},"required":["id","version","stack"]},"visiblePackageTypes":{"type":"array","items":{"type":"string","enum":["cli","cloudformation","helm","operator-image","terraform"],"description":"Types of packages that can be built"}},"visibleSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}}},"required":["activeRelease","visiblePackageTypes","visibleSetupMethods"]},"StackByPlatform":{"type":"object","nullable":true,"properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"machines":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"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":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"]},"EnsureDeploymentGroupByNameRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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 for newly created groups"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."}},"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","machines","local","test"],"description":"Represents the target cloud platform."}},"allowedKubernetesBasePlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","on-prem"]},"minItems":1,"description":"Kubernetes base environments the recipient may target."},"allowedKubernetesClusterSources":{"type":"array","items":{"$ref":"#/components/schemas/KubernetesClusterSource"},"minItems":1,"description":"Whether recipients may create a cluster, use an existing cluster, or both."},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"KubernetesClusterSource":{"type":"string","enum":["create","existing"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","operator-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","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input. Null for release-less packages such as Operate Operator images.","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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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":["operator-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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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\")"},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain embedded into the Operator binary, if whitelabeled."}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["operator-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},"leaseExpiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiration of the current builder lease"},"buildPhase":{"type":"string","nullable":true,"enum":["building","publishing",null],"description":"Coarse package build phase"},"lastProgressAt":{"type":"string","format":"date-time","nullable":true,"description":"Last successful builder lease renewal or phase change"},"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","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"},"rollout":{"type":"object","nullable":true,"properties":{"updatedCount":{"type":"integer","description":"Deployments that finished updating to this release (excludes initial provisions)"},"pendingCount":{"type":"integer","description":"Deployments currently targeting this release but not yet running it"},"avgDurationMs":{"type":"number","nullable":true,"description":"Average time from release creation until a deployment finished updating, in milliseconds"}},"required":["updatedCount","pendingCount","avgDurationMs"],"description":"Rollout stats, included when ?include=rollout is used"}}}]},"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},"version":{"type":"string","minLength":1,"maxLength":256},"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","version","createdAt","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"version":{"type":"string","minLength":1,"maxLength":256},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"OperatorCapabilityReport":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128},"state":{"$ref":"#/components/schemas/OperatorCapabilityState"},"detail":{"type":"string","nullable":true,"maxLength":512}},"required":["key","state"]},"OperatorCapabilityState":{"type":"string","enum":["granted","denied","unavailable"]},"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"},"version":{"type":"string","minLength":1,"maxLength":256},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","version","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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"protocol":{"type":"string","enum":["http","tcp"]},"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535},"wildcardHost":{"type":"string"}},"required":["url","protocol","host","port"]},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Effective deployment model persisted for the deployment."},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment","deploymentModel"]},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"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."},"operatorScope":{"type":"string","minLength":1,"maxLength":512,"description":"Display-only scope reported by the Operator manifest."},"operatorPermission":{"type":"string","minLength":1,"maxLength":64,"description":"Display-only permission tier reported by the Operator manifest."},"initialDesiredRelease":{"type":"string","enum":["active","none"],"default":"active","description":"Desired-release selection for a new deployment. Use none to register an environment without initially requesting a release; later updates can assign one."}},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."}]},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"scheduleReconciliation":{"type":"boolean","default":false},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"DeploymentInputsResponse":{"type":"object","properties":{"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","machines","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."}},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"description":"Current non-secret input values. Secret values are never returned."},"providedInputIds":{"type":"array","items":{"type":"string"},"description":"Input IDs that currently have a value, including redacted secrets."}},"required":["inputs","values","providedInputIds"]},"UpdateDeploymentInputsResponse":{"allOf":[{"$ref":"#/components/schemas/DeploymentInputsResponse"},{"type":"object","properties":{"runtimeUpdateRequested":{"type":"boolean"}},"required":["runtimeUpdateRequested"]}]},"UpdateDeploymentInputsRequest":{"type":"object","properties":{"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"clearInputIds":{"type":"array","items":{"type":"string"},"default":[]}},"additionalProperties":false},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","machines","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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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."}},"required":["project"]},"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","waiting-for-machines","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"]},"PrepareOperatorManifestPackageResponse":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"PrepareOperatorManifestPackageRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}},"required":["project"],"additionalProperties":false},"RenderOperatorManifestResponse":{"type":"object","properties":{"manifest":{"type":"string","description":"Rendered multi-document Kubernetes manifest"},"applyCommand":{"type":"string","description":"kubectl command for applying the manifest from a file"},"filename":{"type":"string","description":"Suggested local filename"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL embedded in the manifest"},"imagePending":{"type":"boolean","description":"True when the operator image is still building. The manifest contains a placeholder image () and must not be applied yet — re-render once the operator-image package is ready to get the real image."}},"required":["manifest","applyCommand","filename","managerUrl","imagePending"]},"RenderOperatorManifestRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"format":{"type":"string","enum":["raw","helm"],"default":"raw","description":"raw: a kubectl-applyable manifest for one cluster. helm: a paste-into-your-chart template whose namespace and environment name come from Helm at install time."},"environmentName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Per-environment identity. Required for raw output, ignored for helm.","example":"my-app"},"namespace":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$","description":"Namespace to observe and install into. Omit for helm to use the release namespace."},"scope":{"type":"string","enum":["namespace","cluster"],"default":"namespace","description":"namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace."},"labelSelector":{"type":"string","minLength":1,"maxLength":256,"description":"Optional Kubernetes label selector narrowing what is managed, applied within the scope."},"permission":{"type":"string","enum":["observe"],"default":"observe","description":"Operator permission tier"},"operatorImagePackageId":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Ready operator-image package to use for the Operator image. If omitted, the latest ready operator-image package for the project is used.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group token embedded in the operator Secret"},"logCollector":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"description":"Enable the node log collector DaemonSet for raw pod logs."}},"required":["project","deploymentGroupToken"],"additionalProperties":false},"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"]},"EventListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Event"},{"type":"object","properties":{"releaseCreatedAt":{"type":"string","format":"date-time","description":"createdAt of the event's referenced release, included when ?include=releaseCreatedAt is used"}}}]},"ListMachinesJoinTokensResponse":{"type":"object","properties":{"tokens":{"type":"array","items":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"}}},"required":["tokens"]},"MachinesJoinTokenSummary":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"expiresAt":{"type":"string","nullable":true},"maxJoins":{"type":"integer","nullable":true},"joinCount":{"type":"integer"},"lastUsedAt":{"type":"string","nullable":true},"revokedAt":{"type":"string","nullable":true}},"required":["id","createdAt","createdBy","joinCount"]},"CreateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RotateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RevokeMachinesJoinTokenResponse":{"type":"object","properties":{"tokenId":{"type":"string"},"revoked":{"type":"boolean"}},"required":["tokenId","revoked"]},"ListMachinesInventoryResponse":{"type":"object","properties":{"machines":{"type":"array","items":{"$ref":"#/components/schemas/MachinesInventoryItem"}}},"required":["machines"]},"MachinesInventoryItem":{"type":"object","properties":{"machineId":{"type":"string"},"status":{"type":"string"},"capacityGroup":{"type":"string"},"zone":{"type":"string"},"cpu":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"memory":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"storage":{"allOf":[{"$ref":"#/components/schemas/MachinesCapacityMetric"}],"nullable":true},"drainBlockers":{"type":"array","items":{"$ref":"#/components/schemas/MachinesDrainBlocker"}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"overlayIp":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"horizondVersion":{"type":"string","nullable":true},"localOverrides":{"type":"array","items":{"$ref":"#/components/schemas/MachinesLocalOverrideObservation"}},"localOverridesObservedAt":{"type":"string","nullable":true},"replicaCount":{"type":"integer"}},"required":["machineId","status","capacityGroup","zone","cpu","memory","drainBlockers","drainForce","lastHeartbeat","localOverrides","replicaCount"]},"MachinesCapacityMetric":{"type":"object","properties":{"allocated":{"type":"number"},"systemReserve":{"type":"number"},"total":{"type":"number"}},"required":["allocated","systemReserve","total"]},"MachinesDrainBlocker":{"type":"object","properties":{"reason":{"type":"string"},"workloadId":{"type":"string","nullable":true},"workloadName":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true},"schedulingMode":{"type":"string","nullable":true},"state":{"type":"string","nullable":true}},"required":["reason"]},"MachinesLocalOverrideObservation":{"type":"object","properties":{"activeDigest":{"type":"string","nullable":true},"actor":{"type":"string","nullable":true},"baseAssignmentHash":{"type":"string"},"baseDigest":{"type":"string","nullable":true},"candidateDigest":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"failureCategory":{"type":"string","nullable":true},"fallbackDigest":{"type":"string","nullable":true},"forcedStop":{"type":"boolean","nullable":true},"healthySince":{"type":"string","nullable":true},"incidentId":{"type":"string","nullable":true},"lifecycle":{"type":"string"},"phaseStartedAt":{"type":"string","nullable":true},"replicaId":{"type":"string"},"workloadName":{"type":"string"}},"required":["baseAssignmentHash","lifecycle","replicaId","workloadName"]},"CancelMachinesMachineDrainResponse":{"type":"object","properties":{"machineId":{"type":"string"},"cancelled":{"type":"boolean"}},"required":["machineId","cancelled"]},"DrainMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"requested":{"type":"boolean"}},"required":["machineId","requested"]},"DrainMachinesMachineRequest":{"type":"object","properties":{"deadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"force":{"type":"boolean"}}},"RemoveMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"removed":{"type":"boolean"}},"required":["machineId","removed"]},"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","machines","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":"Delivery mode for this command (push/pull), derived from the target at creation time"},"target":{"type":"object","nullable":true,"properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to; null on commands created before target routing"},"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","target","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"},"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to"},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How the command is delivered to its target"}},"required":["id","projectId","deploymentModel","target","deliveryMode"]},"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"},"target":{"type":"string","maxLength":255,"description":"Resource id the command is addressed to. Required when the deployment has more than one command-capable resource."},"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"]},"ResolvedCommandTarget":{"type":"object","properties":{"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Identifies the specific resource a command is addressed to."},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How a command is delivered to its target resource.\n\nThis is a Commands-protocol-specific concept and is intentionally distinct\nfrom `DeploymentModel` (see `stack_settings.rs`), which governs the\ninfrastructure-level push/pull wiring for a deployment. Serialized\nlowercase for consistency with `CommandTargetType`."}},"required":["target","deliveryMode"]},"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"}}},"DispatchCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"DispatchCommandRequest":{"type":"object","properties":{"dispatchedAt":{"type":"string","format":"date-time","description":"When the command was dispatched"}},"required":["dispatchedAt"]},"CompleteCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"CompleteCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["SUCCEEDED","FAILED","EXPIRED"],"description":"Terminal state to transition to"},"completedAt":{"type":"string","format":"date-time","description":"When the 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"}},"required":["state","completedAt"]},"IncrementCommandAttemptResponse":{"type":"object","properties":{"attempt":{"type":"integer","description":"The attempt number after the increment"}},"required":["attempt"]},"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","machines","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","machines","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"},"pinnedSubdomain":{"type":"string","nullable":true}},"required":["id","name","pinnedSubdomain"],"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"requiresNetwork":{"type":"boolean","description":"Whether the stack contains resources that require cloud VPC networking"},"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","requiresNetwork","resourceCounts","publicEndpoints"]},"generatedDomain":{"type":"object","nullable":true,"properties":{"domain":{"type":"string"},"isSystem":{"type":"boolean"}},"required":["domain","isSystem"],"description":"Parent domain for generated deployment URLs. Chosen public subdomains are only allowed when isSystem is false."}},"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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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","machines","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"},"readiness":{"type":"object","properties":{"status":{"type":"string","enum":["ready","notReady","unknown"]},"checks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"string","enum":["passed","failed","warning","unknown"]},"message":{"type":"string"},"checkedAt":{"type":"string"}},"required":["code","status","message","checkedAt"]}}},"required":["status","checks"]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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"]},"SlackInstallUrlResponse":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"SlackIntegrationStatus":{"type":"object","properties":{"connected":{"type":"boolean"},"slackTeamId":{"type":"string","nullable":true},"slackTeamName":{"type":"string","nullable":true},"installedByUserId":{"type":"string","nullable":true},"installedAt":{"type":"string","nullable":true},"notificationChannelId":{"type":"string","nullable":true}},"required":["connected","slackTeamId","slackTeamName","installedByUserId","installedAt","notificationChannelId"]},"SlackChannelsResponse":{"type":"object","properties":{"channels":{"type":"array","items":{"$ref":"#/components/schemas/SlackChannel"}}},"required":["channels"]},"SlackChannel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isMember":{"type":"boolean"}},"required":["id","name","isMember"]},"SlackNotificationChannelResponse":{"type":"object","properties":{"notificationChannelId":{"type":"string","nullable":true},"warning":{"type":"string","nullable":true}},"required":["notificationChannelId","warning"]},"SlackNotificationChannelRequest":{"type":"object","properties":{"channelId":{"type":"string","nullable":true}},"required":["channelId"]},"AgentSessionListResponse":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionListItem"}}},"required":["sessions"]},"AgentSessionListItem":{"type":"object","properties":{"id":{"type":"string"},"triggerType":{"type":"string"},"subjectId":{"type":"string"},"subject":{"$ref":"#/components/schemas/AgentSessionSubject"},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","triggerType","subjectId","subject","status","createdAt","updatedAt"]},"AgentSessionSubject":{"type":"object","properties":{"deploymentName":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"releaseId":{"type":"string","nullable":true},"releaseCommitMessage":{"type":"string","nullable":true},"releaseCommitRef":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true}},"required":["deploymentName","deploymentGroupId","deploymentGroupName","releaseId","releaseCommitMessage","releaseCommitRef","projectId","projectName"]},"AgentSessionDetail":{"allOf":[{"$ref":"#/components/schemas/AgentSessionListItem"},{"type":"object","properties":{"resultText":{"type":"string","nullable":true},"toolNames":{"type":"array","nullable":true,"items":{"type":"string"}},"error":{"type":"string","nullable":true},"pendingApproval":{"type":"object","nullable":true,"properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["resultText","toolNames","error","pendingApproval"]}]},"AgentSessionEventsResponse":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionEvent"}},"latestSeq":{"type":"number"},"hasMore":{"type":"boolean"}},"required":["events","latestSeq","hasMore"]},"AgentSessionEvent":{"oneOf":[{"$ref":"#/components/schemas/AgentSessionStatusEvent"},{"$ref":"#/components/schemas/AgentSessionStepEvent"},{"$ref":"#/components/schemas/AgentSessionToolCallEvent"},{"$ref":"#/components/schemas/AgentSessionToolResultEvent"},{"$ref":"#/components/schemas/AgentSessionMarkdownEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalRequestedEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalGrantedEvent"},{"$ref":"#/components/schemas/AgentSessionRestartedEvent"},{"$ref":"#/components/schemas/AgentSessionEventsTruncatedEvent"}],"discriminator":{"propertyName":"type","mapping":{"status":"#/components/schemas/AgentSessionStatusEvent","step":"#/components/schemas/AgentSessionStepEvent","tool_call":"#/components/schemas/AgentSessionToolCallEvent","tool_result":"#/components/schemas/AgentSessionToolResultEvent","markdown":"#/components/schemas/AgentSessionMarkdownEvent","approval_requested":"#/components/schemas/AgentSessionApprovalRequestedEvent","approval_granted":"#/components/schemas/AgentSessionApprovalGrantedEvent","session_restarted":"#/components/schemas/AgentSessionRestartedEvent","events_truncated":"#/components/schemas/AgentSessionEventsTruncatedEvent"}}},"AgentSessionStatusEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["status"]},"payload":{"type":"object","properties":{"status":{"type":"string"},"error":{"type":"string"}},"required":["status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionStepEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["step"]},"payload":{"type":"object","properties":{"stepId":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["in_progress","complete","error"]}},"required":["stepId","title","status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolCallEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_call"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolResultEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_result"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string","nullable":true},"toolName":{"type":"string","nullable":true},"ok":{"type":"boolean"},"output":{"nullable":true}},"required":["toolCallId","toolName","ok"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionMarkdownEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["markdown"]},"payload":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalRequestedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_requested"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalGrantedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_granted"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"approvedByUserId":{"type":"string"},"approvedByName":{"type":"string","nullable":true},"source":{"type":"string","enum":["dashboard","slack"]}},"required":["approvalId","approvedByUserId","approvedByName","source"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionRestartedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["session_restarted"]},"payload":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionEventsTruncatedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["events_truncated"]},"payload":{"type":"object","properties":{"limit":{"type":"number"}},"required":["limit"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApproveResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"resumed":{"type":"boolean"}},"required":["jobId","status","resumed"]},"AgentSessionStopResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"canceled":{"type":"boolean"}},"required":["jobId","status","canceled"]},"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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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"},"SyncAcquireResponseDeployment":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the 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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"inputValues":{"type":"object","properties":{},"additionalProperties":{"nullable":true},"description":"Deployer-provided stack input values, keyed by input id. A resource\ngated with `.enabled(input)` and a Live lifecycle follows these\nvalues; a missing key falls back to the input's declared boolean\ndefault. Suppliers must not place secret-kind input values here:\nthis map serializes and debug-prints unredacted."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"]},"SyncContextRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the context. Manager-scoped tokens are constrained to their own manager ID."}]},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session","deploymentModel"],"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"inputValues":{"type":"object","properties":{},"additionalProperties":{"nullable":true},"description":"Deployer-provided stack input values, keyed by input id. A resource\ngated with `.enabled(input)` and a Live lifecycle follows these\nvalues; a missing key falls back to the input's declared boolean\ndefault. Suppliers must not place secret-kind input values here:\nthis map serializes and debug-prints unredacted."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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."},"resourceHeartbeats":{"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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."},"observedInventoryBatches":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"],"description":"Backend whose observer produced this snapshot."},"complete":{"type":"boolean","description":"Whether this batch is a complete replacement for the scope. Complete\nbatches tombstone previously observed rows in the same scope when they\nare absent from `resources`."},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"inventoryScope":{"type":"string","description":"Stable scope for the provider list operation that produced this batch."},"observedAt":{"type":"string","format":"date-time","description":"Time the inventory scope was observed."},"resources":{"type":"array","items":{"type":"object","properties":{"alienResourceId":{"type":"string","nullable":true},"attributes":{"type":"object","properties":{},"additionalProperties":{"nullable":true}},"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"counts":{"oneOf":[{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},{"nullable":true}]},"deploymentId":{"type":"string","nullable":true},"displayName":{"type":"string"},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerKind":{"type":"string","description":"Provider-native kind, such as `apps/v1/Deployment`,\n`AWS::S3::Bucket`, `storage.googleapis.com/Bucket`, or an Azure\nresource type."},"providerStale":{"type":"boolean"},"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"]}},"rawIdentity":{"type":"string","description":"Provider-native stable identity: Kubernetes object identity, cloud ARN,\nGCP full resource name, Azure resource id, etc."},"region":{"type":"string","nullable":true},"resourceTypeHint":{"oneOf":[{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},{"nullable":true}]},"scope":{"type":"string","nullable":true},"version":{"type":"string","nullable":true,"description":"Release/version identity observed from the provider resource, when available."}},"required":["displayName","health","lifecycle","partial","providerKind","providerStale","rawIdentity"]}},"sourceKind":{"type":"string","description":"Writer/source for this inventory pass, such as `operator` or\n`manager-observer`."}},"required":["backend","complete","controllerPlatform","inventoryScope","observedAt","resources","sourceKind"]},"description":"Observed raw-resource inventory batches read during this step."},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Operator-reported runtime capabilities."},"operatorVersion":{"type":"string","minLength":1,"maxLength":128,"description":"Operator binary version reported by the runtime."}},"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","machines","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","machines","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/invitations/{token}":{"get":{"operationId":"getWorkspaceInvitationPreview","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation preview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitationPreview"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/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/user/invitations/{token}/accept":{"post":{"operationId":"acceptWorkspaceInvitation","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptWorkspaceInvitationResponse"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation unavailable.","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/workspaces/{id}/settings":{"get":{"operationId":"getWorkspaceSettings","description":"Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"getSettings","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 ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspaceSettings","description":"Update the ai-agent settings for a workspace. Supports `debugPermissionMode` (`ask` requires human approval on every ai-agent debug command, `auto` runs them without asking) and `enabled` (`false` turns the ai-agent off so incoming triggers are rejected before any session runs).","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateSettings","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":{"$ref":"#/components/schemas/UpdateWorkspaceSettingsRequest"}}}},"responses":{"200":{"description":"Updated ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations":{"get":{"operationId":"listWorkspaceInvitations","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":"Pending invitations.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceInvitation"}}},"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":"createWorkspaceInvitation","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"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["email","role"]}}}},"responses":{"201":{"description":"Invitation created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"403":{"description":"Seat limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations/{invitationId}/resend":{"post":{"operationId":"resendWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation email sent again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"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}/invitations/{invitationId}":{"delete":{"operationId":"revokeWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation revoked."},"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}/invite-link":{"get":{"operationId":"getWorkspaceInviteLink","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":"Active invite link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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"}}}}}},"put":{"operationId":"createWorkspaceInviteLink","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":{"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["role"]}}}},"responses":{"200":{"description":"Invite link created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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":"revokeWorkspaceInviteLink","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":"Invite link revoked."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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}/deployment-link-setup":{"get":{"operationId":"getProjectDeploymentLinkSetup","description":"Get the active release stack and portal-visible setup availability for deployment-link configuration.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentLinkSetup","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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-link setup retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentLinkSetupResponse"}}}},"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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/by-name":{"put":{"operationId":"ensureDeploymentGroupByName","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and name","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/EnsureDeploymentGroupByNameRequest"}}}},"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"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/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"}}}},"400":{"description":"Deployment setup configuration is invalid","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}/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","enum":["cli","cloudformation","helm","operator-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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"200":{"description":"Existing deployment returned for idempotent deployment-group registration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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 a running or runtime-failed deployment. Running deployments start an update; failed deployments retry toward the selected 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 from the deployment's current lifecycle state.","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}/inputs":{"get":{"operationId":"getDeploymentInputs","description":"Get the active input definitions and current non-secret values for a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInputs","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 inputs returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInputsResponse"}}}},"403":{"description":"Insufficient permission to read deployment inputs.","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"}}}}}},"patch":{"operationId":"updateDeploymentInputs","description":"Update runtime stack inputs, rebuild their environment-variable mappings, and request a deployment update when runtime configuration changes.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateInputs","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/UpdateDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Deployment inputs saved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentInputsResponse"}}}},"400":{"description":"Input values are invalid for the deployment release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update deployment inputs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, project, 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}/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"]}}}},"400":{"description":"Environment variables are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update environment variables.","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}/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","machines","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/operator-manifests/prepare":{"post":{"operationId":"prepareOperatorManifestPackage","tags":["operator-manifests"],"summary":"Prepare the white-labeled Operator image for an Operate install","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/PrepareOperatorManifestPackageRequest"}}}},"responses":{"200":{"description":"Operator image package created or reused.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareOperatorManifestPackageResponse"}}}},"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/operator-manifests/render":{"post":{"operationId":"renderOperatorManifest","tags":["operator-manifests"],"summary":"Render a Kubernetes Operator manifest","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/RenderOperatorManifestRequest"}}}},"responses":{"200":{"description":"Operator manifest rendered successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderOperatorManifestResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Operator image package is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Invalid platform or manager configuration.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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":"array","items":{"type":"string","enum":["releaseCreatedAt"]},"description":"Optional fields to include: releaseCreatedAt"},"required":false,"description":"Optional fields to include: releaseCreatedAt","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 events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EventListItemResponse"},"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/machines/deployments/{id}/join-tokens":{"get":{"operationId":"listMachinesJoinTokens","x-speakeasy-group":"machines","x-speakeasy-name-override":"listJoinTokens","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":"Join tokens for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesJoinTokensResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"createMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"createJoinToken","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":"Newly minted Machines join token. Existing tokens keep working; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/rotate":{"post":{"operationId":"rotateMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"rotateJoinToken","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":"Rotated Machines join token. Revokes all existing tokens, then mints a new one; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/{tokenId}":{"delete":{"operationId":"revokeMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"revokeJoinToken","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":1},"required":true,"name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines join token revocation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/inventory":{"get":{"operationId":"listMachinesInventory","x-speakeasy-group":"machines","x-speakeasy-name-override":"listInventory","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":"Machine inventory for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesInventoryResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}/drain":{"delete":{"operationId":"cancelMachinesMachineDrain","x-speakeasy-group":"machines","x-speakeasy-name-override":"cancelMachineDrain","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines drain cancellation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelMachinesMachineDrainResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"drainMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"drainMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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/DrainMachinesMachineRequest"}}}},"responses":{"200":{"description":"Machines drain request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrainMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}":{"delete":{"operationId":"removeMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"removeMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines remove request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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"}}}},"400":{"description":"Deployment is not ready or has no assigned manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The deployment manager is unavailable.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/target":{"get":{"operationId":"resolveCommandTarget","description":"Resolve which resource a command for this deployment would be addressed to, and how it would be delivered. Fails when the deployment has no command-capable resources, or more than one and no explicit target was named.","x-speakeasy-group":"commands","x-speakeasy-name-override":"resolveTarget","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","pattern":"dep_[0-9a-z]{28}$","description":"Deployment to resolve the target for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Deployment to resolve the target for","name":"deploymentId","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Explicit resource id to resolve; must be a command-capable resource"},"required":false,"description":"Explicit resource id to resolve; must be a command-capable resource","name":"target","in":"query"}],"responses":{"200":{"description":"Resolved command target.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvedCommandTarget"}}}},"404":{"description":"Deployment or target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"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/commands/{id}/dispatch":{"post":{"operationId":"dispatchCommand","description":"Atomically mark a command DISPATCHED unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"dispatch","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/DispatchCommandRequest"}}}},"responses":{"200":{"description":"Dispatch attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/complete":{"post":{"operationId":"completeCommand","description":"Atomically transition a command to a terminal state (SUCCEEDED, FAILED, or EXPIRED) unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"complete","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/CompleteCommandRequest"}}}},"responses":{"200":{"description":"Completion attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/increment-attempt":{"post":{"operationId":"incrementCommandAttempt","description":"Atomically increment the command's attempt counter and return the new value.","x-speakeasy-group":"commands","x-speakeasy-name-override":"incrementAttempt","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":"Attempt incremented.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncrementCommandAttemptResponse"}}}},"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"}}}}}}},"/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"required":false,"description":"Represents the target cloud platform.","name":"platform","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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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/integrations/slack/install-url":{"post":{"operationId":"slackIntegrationInstallUrl","description":"Generate the Slack OAuth consent URL for this workspace.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"installUrl","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":"OAuth URL the dashboard should redirect the user to.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallUrlResponse"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/status":{"get":{"operationId":"slackIntegrationStatus","description":"Return the Slack install for this workspace (if any).","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"status","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":"Status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackIntegrationStatus"}}}}}}},"/v1/integrations/slack/channels":{"get":{"operationId":"slackIntegrationChannels","description":"List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"listChannels","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":"Public channels.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelsResponse"}}}},"400":{"description":"Workspace not connected to Slack.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/notification-channel":{"put":{"operationId":"slackIntegrationSetNotificationChannel","description":"Configure which Slack channel receives ai-agent monitor reports.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"setNotificationChannel","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/SlackNotificationChannelRequest"}}}},"responses":{"200":{"description":"Channel saved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackNotificationChannelResponse"}}}},"400":{"description":"Not connected, or join failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/installation":{"delete":{"operationId":"slackIntegrationUninstall","description":"Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"uninstall","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":{"204":{"description":"Uninstalled."}}}},"/v1/agent-sessions":{"get":{"operationId":"listAgentSessions","description":"List ai-agent monitor sessions for this workspace. Newest first, capped at 50.","x-speakeasy-group":"agentSessions","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":"Sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionListResponse"}}}}}}},"/v1/agent-sessions/{id}":{"get":{"operationId":"getAgentSession","description":"Retrieve one ai-agent monitor session by id.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"get","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":"Session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionDetail"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/events":{"get":{"operationId":"listAgentSessionEvents","description":"Incrementally read a session's event log (steps, tool calls, report deltas, approvals, status transitions). Pass the previous response's `latestSeq` as `after` to fetch only new events.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"events","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"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0},"required":false,"name":"after","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Events after the cursor, oldest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionEventsResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/approve":{"post":{"operationId":"approveAgentSession","description":"Approve a halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"approve","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":"Already resumed / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"202":{"description":"Approved; resume enqueued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/stop":{"post":{"operationId":"stopAgentSession","description":"Stop (cancel) a running, queued, or halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies. Idempotent — stopping an already-terminal session is a 200 no-op.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"stop","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":"Already terminal / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"202":{"description":"Cancel accepted; session stopped.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","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/context":{"post":{"operationId":"syncContext","description":"Get computed deployment state and configuration for a manager-side operation without acquiring the deployment reconciliation lock.","x-speakeasy-group":"sync","x-speakeasy-name-override":"context","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/SyncContextRequest"}}}},"responses":{"200":{"description":"Computed deployment context returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"}}}},"404":{"description":"Deployment not found or not assigned to this manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to build deployment context.","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":{"get":{"operationId":"listInventory","x-speakeasy-group":"resources","x-speakeasy-name-override":"listInventory","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Unified managed and observed resource inventory rows.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"oneOf":[{"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"},"source":{"type":"string","enum":["managed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt","source","deploymentId","deploymentName"]},{"type":"object","properties":{"source":{"type":"string","enum":["observed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"rawKind":{"type":"string"},"alienResourceId":{"type":"string","nullable":true},"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":["source","deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","name","rawKind","alienResourceId","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}":{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"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"},"desiredImage":{"type":"string","nullable":true}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt","desiredImage"]},"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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","machines","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 08c826ec3..e3768067b 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":{"WorkspaceInvitationPreview":{"type":"object","properties":{"kind":{"type":"string","enum":["email","link"]},"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])*$"},"logoUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name","logoUrl"]},"inviter":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"image":{"type":"string","nullable":true,"format":"uri"}},"required":["name","image"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"state":{"type":"string","enum":["active","accepted","expired","revoked"]},"emailHint":{"type":"string","nullable":true}},"required":["kind","workspace","inviter","role","expiresAt","state","emailHint"],"additionalProperties":false},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"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."},"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."},"requestId":{"type":"string","description":"Request ID echoed in the x-request-id response header and server logs."}},"required":["code","message","internal"]},"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},"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},"AcceptWorkspaceInvitationResponse":{"type":"object","properties":{"outcome":{"type":"string","enum":["joined","already-member"]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"workspaceName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["outcome","workspaceId","workspaceName","role"],"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"},"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},"AgentSettings":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"enabled":{"type":"boolean","description":"Workspace on/off switch for the ai-agent. When `false`, incoming triggers (release/deployment monitoring and Slack-invoked sessions) are rejected before any session runs. Defaults to `true`."},"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","enabled","debugPermissionMode","createdAt","updatedAt"],"additionalProperties":false},"UpdateWorkspaceSettingsRequest":{"type":"object","properties":{"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"enabled":{"type":"boolean","description":"Turn the ai-agent on (`true`) or off (`false`) for this workspace."}}},"WorkspaceInvitation":{"type":"object","properties":{"id":{"type":"string","pattern":"winv_[0-9a-zA-Z]{32}$","description":"Unique identifier for the workspace invitation.","example":"winv_DsgltMIFV0GmqtxV5NYTtrknrna"},"email":{"type":"string","format":"email"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"deliveryStatus":{"type":"string","enum":["pending","sent","failed"]},"expiresAt":{"type":"string","format":"date-time"},"lastSentAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","email","role","status","deliveryStatus","expiresAt","lastSentAt","createdAt","inviteUrl"],"additionalProperties":false},"WorkspaceInviteLink":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"wil_[0-9a-zA-Z]{40}$","description":"Unique identifier for the workspace invite link.","example":"wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"useCount":{"type":"integer","minimum":0},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","role","expiresAt","createdAt","useCount","lastUsedAt","inviteUrl"],"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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"]},"DeploymentLinkSetupResponse":{"type":"object","properties":{"activeRelease":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"version":{"type":"string","nullable":true},"stack":{"$ref":"#/components/schemas/StackByPlatform"}},"required":["id","version","stack"]},"visiblePackageTypes":{"type":"array","items":{"type":"string","enum":["cli","cloudformation","helm","operator-image","terraform"],"description":"Types of packages that can be built"}},"visibleSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}}},"required":["activeRelease","visiblePackageTypes","visibleSetupMethods"]},"StackByPlatform":{"type":"object","nullable":true,"properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"machines":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"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":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"]},"EnsureDeploymentGroupByNameRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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 for newly created groups"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."}},"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","machines","local","test"],"description":"Represents the target cloud platform."}},"allowedKubernetesBasePlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","on-prem"]},"minItems":1,"description":"Kubernetes base environments the recipient may target."},"allowedKubernetesClusterSources":{"type":"array","items":{"$ref":"#/components/schemas/KubernetesClusterSource"},"minItems":1,"description":"Whether recipients may create a cluster, use an existing cluster, or both."},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"KubernetesClusterSource":{"type":"string","enum":["create","existing"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","operator-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","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input. Null for release-less packages such as Operate Operator images.","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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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":["operator-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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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\")"},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain embedded into the Operator binary, if whitelabeled."}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["operator-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},"leaseExpiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiration of the current builder lease"},"buildPhase":{"type":"string","nullable":true,"enum":["building","publishing",null],"description":"Coarse package build phase"},"lastProgressAt":{"type":"string","format":"date-time","nullable":true,"description":"Last successful builder lease renewal or phase change"},"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","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"},"rollout":{"type":"object","nullable":true,"properties":{"updatedCount":{"type":"integer","description":"Deployments that finished updating to this release (excludes initial provisions)"},"pendingCount":{"type":"integer","description":"Deployments currently targeting this release but not yet running it"},"avgDurationMs":{"type":"number","nullable":true,"description":"Average time from release creation until a deployment finished updating, in milliseconds"}},"required":["updatedCount","pendingCount","avgDurationMs"],"description":"Rollout stats, included when ?include=rollout is used"}}}]},"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},"version":{"type":"string","minLength":1,"maxLength":256},"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","version","createdAt","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"version":{"type":"string","minLength":1,"maxLength":256},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"OperatorCapabilityReport":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128},"state":{"$ref":"#/components/schemas/OperatorCapabilityState"},"detail":{"type":"string","nullable":true,"maxLength":512}},"required":["key","state"]},"OperatorCapabilityState":{"type":"string","enum":["granted","denied","unavailable"]},"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"},"version":{"type":"string","minLength":1,"maxLength":256},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","version","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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"protocol":{"type":"string","enum":["http","tcp"]},"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535},"wildcardHost":{"type":"string"}},"required":["url","protocol","host","port"]},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Effective deployment model persisted for the deployment."},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment","deploymentModel"]},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"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."},"operatorScope":{"type":"string","minLength":1,"maxLength":512,"description":"Display-only scope reported by the Operator manifest."},"operatorPermission":{"type":"string","minLength":1,"maxLength":64,"description":"Display-only permission tier reported by the Operator manifest."},"initialDesiredRelease":{"type":"string","enum":["active","none"],"default":"active","description":"Desired-release selection for a new deployment. Use none to register an environment without initially requesting a release; later updates can assign one."}},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."}]},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"scheduleReconciliation":{"type":"boolean","default":false},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"DeploymentInputsResponse":{"type":"object","properties":{"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","machines","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."}},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"description":"Current non-secret input values. Secret values are never returned."},"providedInputIds":{"type":"array","items":{"type":"string"},"description":"Input IDs that currently have a value, including redacted secrets."}},"required":["inputs","values","providedInputIds"]},"UpdateDeploymentInputsResponse":{"allOf":[{"$ref":"#/components/schemas/DeploymentInputsResponse"},{"type":"object","properties":{"runtimeUpdateRequested":{"type":"boolean"}},"required":["runtimeUpdateRequested"]}]},"UpdateDeploymentInputsRequest":{"type":"object","properties":{"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"clearInputIds":{"type":"array","items":{"type":"string"},"default":[]}},"additionalProperties":false},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","machines","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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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."}},"required":["project"]},"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","waiting-for-machines","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"]},"PrepareOperatorManifestPackageResponse":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"PrepareOperatorManifestPackageRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}},"required":["project"],"additionalProperties":false},"RenderOperatorManifestResponse":{"type":"object","properties":{"manifest":{"type":"string","description":"Rendered multi-document Kubernetes manifest"},"applyCommand":{"type":"string","description":"kubectl command for applying the manifest from a file"},"filename":{"type":"string","description":"Suggested local filename"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL embedded in the manifest"},"imagePending":{"type":"boolean","description":"True when the operator image is still building. The manifest contains a placeholder image () and must not be applied yet — re-render once the operator-image package is ready to get the real image."}},"required":["manifest","applyCommand","filename","managerUrl","imagePending"]},"RenderOperatorManifestRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"format":{"type":"string","enum":["raw","helm"],"default":"raw","description":"raw: a kubectl-applyable manifest for one cluster. helm: a paste-into-your-chart template whose namespace and environment name come from Helm at install time."},"environmentName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Per-environment identity. Required for raw output, ignored for helm.","example":"my-app"},"namespace":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$","description":"Namespace to observe and install into. Omit for helm to use the release namespace."},"scope":{"type":"string","enum":["namespace","cluster"],"default":"namespace","description":"namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace."},"labelSelector":{"type":"string","minLength":1,"maxLength":256,"description":"Optional Kubernetes label selector narrowing what is managed, applied within the scope."},"permission":{"type":"string","enum":["observe"],"default":"observe","description":"Operator permission tier"},"operatorImagePackageId":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Ready operator-image package to use for the Operator image. If omitted, the latest ready operator-image package for the project is used.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group token embedded in the operator Secret"},"logCollector":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"description":"Enable the node log collector DaemonSet for raw pod logs."}},"required":["project","deploymentGroupToken"],"additionalProperties":false},"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"]},"EventListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Event"},{"type":"object","properties":{"releaseCreatedAt":{"type":"string","format":"date-time","description":"createdAt of the event's referenced release, included when ?include=releaseCreatedAt is used"}}}]},"ListMachinesJoinTokensResponse":{"type":"object","properties":{"tokens":{"type":"array","items":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"}}},"required":["tokens"]},"MachinesJoinTokenSummary":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"expiresAt":{"type":"string","nullable":true},"maxJoins":{"type":"integer","nullable":true},"joinCount":{"type":"integer"},"lastUsedAt":{"type":"string","nullable":true},"revokedAt":{"type":"string","nullable":true}},"required":["id","createdAt","createdBy","joinCount"]},"CreateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RotateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RevokeMachinesJoinTokenResponse":{"type":"object","properties":{"tokenId":{"type":"string"},"revoked":{"type":"boolean"}},"required":["tokenId","revoked"]},"ListMachinesInventoryResponse":{"type":"object","properties":{"machines":{"type":"array","items":{"$ref":"#/components/schemas/MachinesInventoryItem"}}},"required":["machines"]},"MachinesInventoryItem":{"type":"object","properties":{"machineId":{"type":"string"},"status":{"type":"string"},"capacityGroup":{"type":"string"},"zone":{"type":"string"},"cpu":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"memory":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"storage":{"allOf":[{"$ref":"#/components/schemas/MachinesCapacityMetric"}],"nullable":true},"drainBlockers":{"type":"array","items":{"$ref":"#/components/schemas/MachinesDrainBlocker"}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"overlayIp":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"horizondVersion":{"type":"string","nullable":true},"localOverrides":{"type":"array","items":{"$ref":"#/components/schemas/MachinesLocalOverrideObservation"}},"localOverridesObservedAt":{"type":"string","nullable":true},"replicaCount":{"type":"integer"}},"required":["machineId","status","capacityGroup","zone","cpu","memory","drainBlockers","drainForce","lastHeartbeat","localOverrides","replicaCount"]},"MachinesCapacityMetric":{"type":"object","properties":{"allocated":{"type":"number"},"systemReserve":{"type":"number"},"total":{"type":"number"}},"required":["allocated","systemReserve","total"]},"MachinesDrainBlocker":{"type":"object","properties":{"reason":{"type":"string"},"workloadId":{"type":"string","nullable":true},"workloadName":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true},"schedulingMode":{"type":"string","nullable":true},"state":{"type":"string","nullable":true}},"required":["reason"]},"MachinesLocalOverrideObservation":{"type":"object","properties":{"activeDigest":{"type":"string","nullable":true},"actor":{"type":"string","nullable":true},"baseAssignmentHash":{"type":"string"},"baseDigest":{"type":"string","nullable":true},"candidateDigest":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"failureCategory":{"type":"string","nullable":true},"fallbackDigest":{"type":"string","nullable":true},"forcedStop":{"type":"boolean","nullable":true},"healthySince":{"type":"string","nullable":true},"incidentId":{"type":"string","nullable":true},"lifecycle":{"type":"string"},"phaseStartedAt":{"type":"string","nullable":true},"replicaId":{"type":"string"},"workloadName":{"type":"string"}},"required":["baseAssignmentHash","lifecycle","replicaId","workloadName"]},"CancelMachinesMachineDrainResponse":{"type":"object","properties":{"machineId":{"type":"string"},"cancelled":{"type":"boolean"}},"required":["machineId","cancelled"]},"DrainMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"requested":{"type":"boolean"}},"required":["machineId","requested"]},"DrainMachinesMachineRequest":{"type":"object","properties":{"deadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"force":{"type":"boolean"}}},"RemoveMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"removed":{"type":"boolean"}},"required":["machineId","removed"]},"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","machines","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":"Delivery mode for this command (push/pull), derived from the target at creation time"},"target":{"type":"object","nullable":true,"properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to; null on commands created before target routing"},"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","target","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"},"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to"},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How the command is delivered to its target"}},"required":["id","projectId","deploymentModel","target","deliveryMode"]},"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"},"target":{"type":"string","maxLength":255,"description":"Resource id the command is addressed to. Required when the deployment has more than one command-capable resource."},"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"]},"ResolvedCommandTarget":{"type":"object","properties":{"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Identifies the specific resource a command is addressed to."},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How a command is delivered to its target resource.\n\nThis is a Commands-protocol-specific concept and is intentionally distinct\nfrom `DeploymentModel` (see `stack_settings.rs`), which governs the\ninfrastructure-level push/pull wiring for a deployment. Serialized\nlowercase for consistency with `CommandTargetType`."}},"required":["target","deliveryMode"]},"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"}}},"DispatchCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"DispatchCommandRequest":{"type":"object","properties":{"dispatchedAt":{"type":"string","format":"date-time","description":"When the command was dispatched"}},"required":["dispatchedAt"]},"CompleteCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"CompleteCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["SUCCEEDED","FAILED","EXPIRED"],"description":"Terminal state to transition to"},"completedAt":{"type":"string","format":"date-time","description":"When the 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"}},"required":["state","completedAt"]},"IncrementCommandAttemptResponse":{"type":"object","properties":{"attempt":{"type":"integer","description":"The attempt number after the increment"}},"required":["attempt"]},"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","machines","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","machines","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"},"pinnedSubdomain":{"type":"string","nullable":true}},"required":["id","name","pinnedSubdomain"],"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"requiresNetwork":{"type":"boolean","description":"Whether the stack contains resources that require cloud VPC networking"},"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","requiresNetwork","resourceCounts","publicEndpoints"]},"generatedDomain":{"type":"object","nullable":true,"properties":{"domain":{"type":"string"},"isSystem":{"type":"boolean"}},"required":["domain","isSystem"],"description":"Parent domain for generated deployment URLs. Chosen public subdomains are only allowed when isSystem is false."}},"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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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","machines","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"},"readiness":{"type":"object","properties":{"status":{"type":"string","enum":["ready","notReady","unknown"]},"checks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"string","enum":["passed","failed","warning","unknown"]},"message":{"type":"string"},"checkedAt":{"type":"string"}},"required":["code","status","message","checkedAt"]}}},"required":["status","checks"]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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"]},"SlackInstallUrlResponse":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"SlackIntegrationStatus":{"type":"object","properties":{"connected":{"type":"boolean"},"slackTeamId":{"type":"string","nullable":true},"slackTeamName":{"type":"string","nullable":true},"installedByUserId":{"type":"string","nullable":true},"installedAt":{"type":"string","nullable":true},"notificationChannelId":{"type":"string","nullable":true}},"required":["connected","slackTeamId","slackTeamName","installedByUserId","installedAt","notificationChannelId"]},"SlackChannelsResponse":{"type":"object","properties":{"channels":{"type":"array","items":{"$ref":"#/components/schemas/SlackChannel"}}},"required":["channels"]},"SlackChannel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isMember":{"type":"boolean"}},"required":["id","name","isMember"]},"SlackNotificationChannelResponse":{"type":"object","properties":{"notificationChannelId":{"type":"string","nullable":true},"warning":{"type":"string","nullable":true}},"required":["notificationChannelId","warning"]},"SlackNotificationChannelRequest":{"type":"object","properties":{"channelId":{"type":"string","nullable":true}},"required":["channelId"]},"AgentSessionListResponse":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionListItem"}}},"required":["sessions"]},"AgentSessionListItem":{"type":"object","properties":{"id":{"type":"string"},"triggerType":{"type":"string"},"subjectId":{"type":"string"},"subject":{"$ref":"#/components/schemas/AgentSessionSubject"},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","triggerType","subjectId","subject","status","createdAt","updatedAt"]},"AgentSessionSubject":{"type":"object","properties":{"deploymentName":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"releaseId":{"type":"string","nullable":true},"releaseCommitMessage":{"type":"string","nullable":true},"releaseCommitRef":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true}},"required":["deploymentName","deploymentGroupId","deploymentGroupName","releaseId","releaseCommitMessage","releaseCommitRef","projectId","projectName"]},"AgentSessionDetail":{"allOf":[{"$ref":"#/components/schemas/AgentSessionListItem"},{"type":"object","properties":{"resultText":{"type":"string","nullable":true},"toolNames":{"type":"array","nullable":true,"items":{"type":"string"}},"error":{"type":"string","nullable":true},"pendingApproval":{"type":"object","nullable":true,"properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["resultText","toolNames","error","pendingApproval"]}]},"AgentSessionEventsResponse":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionEvent"}},"latestSeq":{"type":"number"},"hasMore":{"type":"boolean"}},"required":["events","latestSeq","hasMore"]},"AgentSessionEvent":{"oneOf":[{"$ref":"#/components/schemas/AgentSessionStatusEvent"},{"$ref":"#/components/schemas/AgentSessionStepEvent"},{"$ref":"#/components/schemas/AgentSessionToolCallEvent"},{"$ref":"#/components/schemas/AgentSessionToolResultEvent"},{"$ref":"#/components/schemas/AgentSessionMarkdownEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalRequestedEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalGrantedEvent"},{"$ref":"#/components/schemas/AgentSessionRestartedEvent"},{"$ref":"#/components/schemas/AgentSessionEventsTruncatedEvent"}],"discriminator":{"propertyName":"type","mapping":{"status":"#/components/schemas/AgentSessionStatusEvent","step":"#/components/schemas/AgentSessionStepEvent","tool_call":"#/components/schemas/AgentSessionToolCallEvent","tool_result":"#/components/schemas/AgentSessionToolResultEvent","markdown":"#/components/schemas/AgentSessionMarkdownEvent","approval_requested":"#/components/schemas/AgentSessionApprovalRequestedEvent","approval_granted":"#/components/schemas/AgentSessionApprovalGrantedEvent","session_restarted":"#/components/schemas/AgentSessionRestartedEvent","events_truncated":"#/components/schemas/AgentSessionEventsTruncatedEvent"}}},"AgentSessionStatusEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["status"]},"payload":{"type":"object","properties":{"status":{"type":"string"},"error":{"type":"string"}},"required":["status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionStepEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["step"]},"payload":{"type":"object","properties":{"stepId":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["in_progress","complete","error"]}},"required":["stepId","title","status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolCallEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_call"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolResultEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_result"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string","nullable":true},"toolName":{"type":"string","nullable":true},"ok":{"type":"boolean"},"output":{"nullable":true}},"required":["toolCallId","toolName","ok"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionMarkdownEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["markdown"]},"payload":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalRequestedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_requested"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalGrantedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_granted"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"approvedByUserId":{"type":"string"},"approvedByName":{"type":"string","nullable":true},"source":{"type":"string","enum":["dashboard","slack"]}},"required":["approvalId","approvedByUserId","approvedByName","source"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionRestartedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["session_restarted"]},"payload":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionEventsTruncatedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["events_truncated"]},"payload":{"type":"object","properties":{"limit":{"type":"number"}},"required":["limit"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApproveResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"resumed":{"type":"boolean"}},"required":["jobId","status","resumed"]},"AgentSessionStopResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"canceled":{"type":"boolean"}},"required":["jobId","status","canceled"]},"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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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"},"SyncAcquireResponseDeployment":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the 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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"]},"SyncContextRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the context. Manager-scoped tokens are constrained to their own manager ID."}]},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session","deploymentModel"],"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"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","machines","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":["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."},"resourceHeartbeats":{"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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."},"observedInventoryBatches":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"],"description":"Backend whose observer produced this snapshot."},"complete":{"type":"boolean","description":"Whether this batch is a complete replacement for the scope. Complete\nbatches tombstone previously observed rows in the same scope when they\nare absent from `resources`."},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"inventoryScope":{"type":"string","description":"Stable scope for the provider list operation that produced this batch."},"observedAt":{"type":"string","format":"date-time","description":"Time the inventory scope was observed."},"resources":{"type":"array","items":{"type":"object","properties":{"alienResourceId":{"type":"string","nullable":true},"attributes":{"type":"object","properties":{},"additionalProperties":{"nullable":true}},"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"counts":{"oneOf":[{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},{"nullable":true}]},"deploymentId":{"type":"string","nullable":true},"displayName":{"type":"string"},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerKind":{"type":"string","description":"Provider-native kind, such as `apps/v1/Deployment`,\n`AWS::S3::Bucket`, `storage.googleapis.com/Bucket`, or an Azure\nresource type."},"providerStale":{"type":"boolean"},"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"]}},"rawIdentity":{"type":"string","description":"Provider-native stable identity: Kubernetes object identity, cloud ARN,\nGCP full resource name, Azure resource id, etc."},"region":{"type":"string","nullable":true},"resourceTypeHint":{"oneOf":[{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},{"nullable":true}]},"scope":{"type":"string","nullable":true},"version":{"type":"string","nullable":true,"description":"Release/version identity observed from the provider resource, when available."}},"required":["displayName","health","lifecycle","partial","providerKind","providerStale","rawIdentity"]}},"sourceKind":{"type":"string","description":"Writer/source for this inventory pass, such as `operator` or\n`manager-observer`."}},"required":["backend","complete","controllerPlatform","inventoryScope","observedAt","resources","sourceKind"]},"description":"Observed raw-resource inventory batches read during this step."},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Operator-reported runtime capabilities."},"operatorVersion":{"type":"string","minLength":1,"maxLength":128,"description":"Operator binary version reported by the runtime."}},"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","machines","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","machines","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/invitations/{token}":{"get":{"operationId":"getWorkspaceInvitationPreview","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation preview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitationPreview"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/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/user/invitations/{token}/accept":{"post":{"operationId":"acceptWorkspaceInvitation","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptWorkspaceInvitationResponse"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation unavailable.","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/workspaces/{id}/settings":{"get":{"operationId":"getWorkspaceSettings","description":"Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"getSettings","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 ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspaceSettings","description":"Update the ai-agent settings for a workspace. Supports `debugPermissionMode` (`ask` requires human approval on every ai-agent debug command, `auto` runs them without asking) and `enabled` (`false` turns the ai-agent off so incoming triggers are rejected before any session runs).","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateSettings","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":{"$ref":"#/components/schemas/UpdateWorkspaceSettingsRequest"}}}},"responses":{"200":{"description":"Updated ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations":{"get":{"operationId":"listWorkspaceInvitations","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":"Pending invitations.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceInvitation"}}},"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":"createWorkspaceInvitation","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"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["email","role"]}}}},"responses":{"201":{"description":"Invitation created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"403":{"description":"Seat limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations/{invitationId}/resend":{"post":{"operationId":"resendWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation email sent again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"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}/invitations/{invitationId}":{"delete":{"operationId":"revokeWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation revoked."},"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}/invite-link":{"get":{"operationId":"getWorkspaceInviteLink","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":"Active invite link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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"}}}}}},"put":{"operationId":"createWorkspaceInviteLink","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":{"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["role"]}}}},"responses":{"200":{"description":"Invite link created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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":"revokeWorkspaceInviteLink","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":"Invite link revoked."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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}/deployment-link-setup":{"get":{"operationId":"getProjectDeploymentLinkSetup","description":"Get the active release stack and portal-visible setup availability for deployment-link configuration.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentLinkSetup","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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-link setup retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentLinkSetupResponse"}}}},"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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/by-name":{"put":{"operationId":"ensureDeploymentGroupByName","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and name","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/EnsureDeploymentGroupByNameRequest"}}}},"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"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/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"}}}},"400":{"description":"Deployment setup configuration is invalid","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}/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","enum":["cli","cloudformation","helm","operator-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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"200":{"description":"Existing deployment returned for idempotent deployment-group registration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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 a running or runtime-failed deployment. Running deployments start an update; failed deployments retry toward the selected 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 from the deployment's current lifecycle state.","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}/inputs":{"get":{"operationId":"getDeploymentInputs","description":"Get the active input definitions and current non-secret values for a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInputs","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 inputs returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInputsResponse"}}}},"403":{"description":"Insufficient permission to read deployment inputs.","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"}}}}}},"patch":{"operationId":"updateDeploymentInputs","description":"Update runtime stack inputs, rebuild their environment-variable mappings, and request a deployment update when runtime configuration changes.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateInputs","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/UpdateDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Deployment inputs saved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentInputsResponse"}}}},"400":{"description":"Input values are invalid for the deployment release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update deployment inputs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, project, 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}/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"]}}}},"400":{"description":"Environment variables are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update environment variables.","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}/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","machines","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/operator-manifests/prepare":{"post":{"operationId":"prepareOperatorManifestPackage","tags":["operator-manifests"],"summary":"Prepare the white-labeled Operator image for an Operate install","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/PrepareOperatorManifestPackageRequest"}}}},"responses":{"200":{"description":"Operator image package created or reused.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareOperatorManifestPackageResponse"}}}},"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/operator-manifests/render":{"post":{"operationId":"renderOperatorManifest","tags":["operator-manifests"],"summary":"Render a Kubernetes Operator manifest","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/RenderOperatorManifestRequest"}}}},"responses":{"200":{"description":"Operator manifest rendered successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderOperatorManifestResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Operator image package is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Invalid platform or manager configuration.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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":"array","items":{"type":"string","enum":["releaseCreatedAt"]},"description":"Optional fields to include: releaseCreatedAt"},"required":false,"description":"Optional fields to include: releaseCreatedAt","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 events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EventListItemResponse"},"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/machines/deployments/{id}/join-tokens":{"get":{"operationId":"listMachinesJoinTokens","x-speakeasy-group":"machines","x-speakeasy-name-override":"listJoinTokens","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":"Join tokens for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesJoinTokensResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"createMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"createJoinToken","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":"Newly minted Machines join token. Existing tokens keep working; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/rotate":{"post":{"operationId":"rotateMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"rotateJoinToken","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":"Rotated Machines join token. Revokes all existing tokens, then mints a new one; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/{tokenId}":{"delete":{"operationId":"revokeMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"revokeJoinToken","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":1},"required":true,"name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines join token revocation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/inventory":{"get":{"operationId":"listMachinesInventory","x-speakeasy-group":"machines","x-speakeasy-name-override":"listInventory","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":"Machine inventory for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesInventoryResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}/drain":{"delete":{"operationId":"cancelMachinesMachineDrain","x-speakeasy-group":"machines","x-speakeasy-name-override":"cancelMachineDrain","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines drain cancellation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelMachinesMachineDrainResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"drainMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"drainMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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/DrainMachinesMachineRequest"}}}},"responses":{"200":{"description":"Machines drain request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrainMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}":{"delete":{"operationId":"removeMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"removeMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines remove request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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"}}}},"400":{"description":"Deployment is not ready or has no assigned manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The deployment manager is unavailable.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/target":{"get":{"operationId":"resolveCommandTarget","description":"Resolve which resource a command for this deployment would be addressed to, and how it would be delivered. Fails when the deployment has no command-capable resources, or more than one and no explicit target was named.","x-speakeasy-group":"commands","x-speakeasy-name-override":"resolveTarget","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","pattern":"dep_[0-9a-z]{28}$","description":"Deployment to resolve the target for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Deployment to resolve the target for","name":"deploymentId","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Explicit resource id to resolve; must be a command-capable resource"},"required":false,"description":"Explicit resource id to resolve; must be a command-capable resource","name":"target","in":"query"}],"responses":{"200":{"description":"Resolved command target.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvedCommandTarget"}}}},"404":{"description":"Deployment or target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"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/commands/{id}/dispatch":{"post":{"operationId":"dispatchCommand","description":"Atomically mark a command DISPATCHED unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"dispatch","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/DispatchCommandRequest"}}}},"responses":{"200":{"description":"Dispatch attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/complete":{"post":{"operationId":"completeCommand","description":"Atomically transition a command to a terminal state (SUCCEEDED, FAILED, or EXPIRED) unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"complete","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/CompleteCommandRequest"}}}},"responses":{"200":{"description":"Completion attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/increment-attempt":{"post":{"operationId":"incrementCommandAttempt","description":"Atomically increment the command's attempt counter and return the new value.","x-speakeasy-group":"commands","x-speakeasy-name-override":"incrementAttempt","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":"Attempt incremented.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncrementCommandAttemptResponse"}}}},"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"}}}}}}},"/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"required":false,"description":"Represents the target cloud platform.","name":"platform","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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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/integrations/slack/install-url":{"post":{"operationId":"slackIntegrationInstallUrl","description":"Generate the Slack OAuth consent URL for this workspace.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"installUrl","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":"OAuth URL the dashboard should redirect the user to.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallUrlResponse"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/status":{"get":{"operationId":"slackIntegrationStatus","description":"Return the Slack install for this workspace (if any).","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"status","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":"Status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackIntegrationStatus"}}}}}}},"/v1/integrations/slack/channels":{"get":{"operationId":"slackIntegrationChannels","description":"List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"listChannels","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":"Public channels.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelsResponse"}}}},"400":{"description":"Workspace not connected to Slack.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/notification-channel":{"put":{"operationId":"slackIntegrationSetNotificationChannel","description":"Configure which Slack channel receives ai-agent monitor reports.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"setNotificationChannel","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/SlackNotificationChannelRequest"}}}},"responses":{"200":{"description":"Channel saved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackNotificationChannelResponse"}}}},"400":{"description":"Not connected, or join failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/installation":{"delete":{"operationId":"slackIntegrationUninstall","description":"Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"uninstall","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":{"204":{"description":"Uninstalled."}}}},"/v1/agent-sessions":{"get":{"operationId":"listAgentSessions","description":"List ai-agent monitor sessions for this workspace. Newest first, capped at 50.","x-speakeasy-group":"agentSessions","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":"Sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionListResponse"}}}}}}},"/v1/agent-sessions/{id}":{"get":{"operationId":"getAgentSession","description":"Retrieve one ai-agent monitor session by id.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"get","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":"Session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionDetail"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/events":{"get":{"operationId":"listAgentSessionEvents","description":"Incrementally read a session's event log (steps, tool calls, report deltas, approvals, status transitions). Pass the previous response's `latestSeq` as `after` to fetch only new events.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"events","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"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0},"required":false,"name":"after","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Events after the cursor, oldest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionEventsResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/approve":{"post":{"operationId":"approveAgentSession","description":"Approve a halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"approve","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":"Already resumed / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"202":{"description":"Approved; resume enqueued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/stop":{"post":{"operationId":"stopAgentSession","description":"Stop (cancel) a running, queued, or halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies. Idempotent — stopping an already-terminal session is a 200 no-op.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"stop","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":"Already terminal / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"202":{"description":"Cancel accepted; session stopped.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","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/context":{"post":{"operationId":"syncContext","description":"Get computed deployment state and configuration for a manager-side operation without acquiring the deployment reconciliation lock.","x-speakeasy-group":"sync","x-speakeasy-name-override":"context","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/SyncContextRequest"}}}},"responses":{"200":{"description":"Computed deployment context returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"}}}},"404":{"description":"Deployment not found or not assigned to this manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to build deployment context.","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":{"get":{"operationId":"listInventory","x-speakeasy-group":"resources","x-speakeasy-name-override":"listInventory","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Unified managed and observed resource inventory rows.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"oneOf":[{"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"},"source":{"type":"string","enum":["managed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt","source","deploymentId","deploymentName"]},{"type":"object","properties":{"source":{"type":"string","enum":["observed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"rawKind":{"type":"string"},"alienResourceId":{"type":"string","nullable":true},"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":["source","deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","name","rawKind","alienResourceId","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}":{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"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"},"desiredImage":{"type":"string","nullable":true}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt","desiredImage"]},"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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","machines","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":{"WorkspaceInvitationPreview":{"type":"object","properties":{"kind":{"type":"string","enum":["email","link"]},"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])*$"},"logoUrl":{"type":"string","nullable":true,"format":"uri"}},"required":["id","name","logoUrl"]},"inviter":{"type":"object","nullable":true,"properties":{"name":{"type":"string"},"image":{"type":"string","nullable":true,"format":"uri"}},"required":["name","image"]},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"state":{"type":"string","enum":["active","accepted","expired","revoked"]},"emailHint":{"type":"string","nullable":true}},"required":["kind","workspace","inviter","role","expiresAt","state","emailHint"],"additionalProperties":false},"WorkspaceRole":{"type":"string","enum":["workspace.viewer","workspace.member","workspace.admin"],"description":"Role for workspace-scoped service accounts","example":"workspace.member"},"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."},"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."},"requestId":{"type":"string","description":"Request ID echoed in the x-request-id response header and server logs."}},"required":["code","message","internal"]},"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},"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},"AcceptWorkspaceInvitationResponse":{"type":"object","properties":{"outcome":{"type":"string","enum":["joined","already-member"]},"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"workspaceName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["outcome","workspaceId","workspaceName","role"],"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"},"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},"AgentSettings":{"type":"object","properties":{"workspaceId":{"type":"string","pattern":"ws_[0-9a-zA-Z]{24}$","description":"Unique identifier for the workspace.","example":"ws_It13CUaGEhLLAB87simX0"},"enabled":{"type":"boolean","description":"Workspace on/off switch for the ai-agent. When `false`, incoming triggers (release/deployment monitoring and Slack-invoked sessions) are rejected before any session runs. Defaults to `true`."},"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["workspaceId","enabled","debugPermissionMode","createdAt","updatedAt"],"additionalProperties":false},"UpdateWorkspaceSettingsRequest":{"type":"object","properties":{"debugPermissionMode":{"type":"string","enum":["auto","ask"],"description":"Workspace-level policy for ai-agent debug commands. `auto` runs `alien_debug` tool calls without asking; `ask` halts each session before every debug command and waits for a human approval from dashboard or Slack."},"enabled":{"type":"boolean","description":"Turn the ai-agent on (`true`) or off (`false`) for this workspace."}}},"WorkspaceInvitation":{"type":"object","properties":{"id":{"type":"string","pattern":"winv_[0-9a-zA-Z]{32}$","description":"Unique identifier for the workspace invitation.","example":"winv_DsgltMIFV0GmqtxV5NYTtrknrna"},"email":{"type":"string","format":"email"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"]},"deliveryStatus":{"type":"string","enum":["pending","sent","failed"]},"expiresAt":{"type":"string","format":"date-time"},"lastSentAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","email","role","status","deliveryStatus","expiresAt","lastSentAt","createdAt","inviteUrl"],"additionalProperties":false},"WorkspaceInviteLink":{"type":"object","nullable":true,"properties":{"id":{"type":"string","pattern":"wil_[0-9a-zA-Z]{40}$","description":"Unique identifier for the workspace invite link.","example":"wil_RgcthDSZ37rmFLekuItpFS7btjXoYwou1gE4"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"expiresAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"useCount":{"type":"integer","minimum":0},"lastUsedAt":{"type":"string","format":"date-time","nullable":true},"inviteUrl":{"type":"string","format":"uri"}},"required":["id","role","expiresAt","createdAt","useCount","lastUsedAt","inviteUrl"],"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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"},"machines":{"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"]},"DeploymentLinkSetupResponse":{"type":"object","properties":{"activeRelease":{"type":"object","properties":{"id":{"type":"string","pattern":"rel_[0-9a-zA-Z]{28}$","description":"Unique identifier for the release.","example":"rel_WbhQgksrawSKIpEN0NAssHX9"},"version":{"type":"string","nullable":true},"stack":{"$ref":"#/components/schemas/StackByPlatform"}},"required":["id","version","stack"]},"visiblePackageTypes":{"type":"array","items":{"type":"string","enum":["cli","cloudformation","helm","operator-image","terraform"],"description":"Types of packages that can be built"}},"visibleSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}}},"required":["activeRelease","visiblePackageTypes","visibleSetupMethods"]},"StackByPlatform":{"type":"object","nullable":true,"properties":{"aws":{"nullable":true},"gcp":{"nullable":true},"azure":{"nullable":true},"kubernetes":{"nullable":true},"machines":{"nullable":true},"local":{"nullable":true},"test":{"nullable":true}},"additionalProperties":false},"DeploymentSetupMethod":{"type":"string","enum":["cloudformation","google-oauth","terraform","helm","cli","manual"]},"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":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"]},"EnsureDeploymentGroupByNameRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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 for newly created groups"}},"required":["name","project"]},"ProjectIDOrNameQueryParam":{"type":"string","maxLength":100,"description":"Filter by project ID or name."},"UpdateDeploymentGroupRequest":{"type":"object","properties":{"name":{"type":"string","minLength":2,"maxLength":100,"pattern":"^(?!dg[-_])[a-z0-9](-?[a-z0-9])*$","description":"Deployment group name.","example":"prod-us-east-1"},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."}},"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","machines","local","test"],"description":"Represents the target cloud platform."}},"allowedKubernetesBasePlatforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","on-prem"]},"minItems":1,"description":"Kubernetes base environments the recipient may target."},"allowedKubernetesClusterSources":{"type":"array","items":{"$ref":"#/components/schemas/KubernetesClusterSource"},"minItems":1,"description":"Whether recipients may create a cluster, use an existing cluster, or both."},"allowedSetupMethods":{"type":"array","items":{"$ref":"#/components/schemas/DeploymentSetupMethod"}},"allowReleasePinning":{"type":"boolean"},"stackSettings":{"$ref":"#/components/schemas/DeploymentSetupStackSettingsPolicy"}},"required":["allowedPlatforms","allowedSetupMethods"]},"KubernetesClusterSource":{"type":"string","enum":["create","existing"]},"DeploymentSetupStackSettingsPolicy":{"type":"object","properties":{"defaults":{"type":"object","properties":{"compute":{"oneOf":[{"type":"object","properties":{"pools":{"type":"object","properties":{},"additionalProperties":{"oneOf":[{"type":"object","properties":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","operator-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","nullable":true,"pattern":"rel_[0-9a-zA-Z]{28}$","description":"Release used as package build input. Null for release-less packages such as Operate Operator images.","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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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":["operator-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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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\")"},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain embedded into the Operator binary, if whitelabeled."}},"required":["digest","image"],"description":"Outputs from an Operator image package build"},{"type":"object","properties":{"type":{"type":"string","enum":["operator-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},"leaseExpiresAt":{"type":"string","format":"date-time","nullable":true,"description":"Expiration of the current builder lease"},"buildPhase":{"type":"string","nullable":true,"enum":["building","publishing",null],"description":"Coarse package build phase"},"lastProgressAt":{"type":"string","format":"date-time","nullable":true,"description":"Last successful builder lease renewal or phase change"},"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","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"},"rollout":{"type":"object","nullable":true,"properties":{"updatedCount":{"type":"integer","description":"Deployments that finished updating to this release (excludes initial provisions)"},"pendingCount":{"type":"integer","description":"Deployments currently targeting this release but not yet running it"},"avgDurationMs":{"type":"number","nullable":true,"description":"Average time from release creation until a deployment finished updating, in milliseconds"}},"required":["updatedCount","pendingCount","avgDurationMs"],"description":"Rollout stats, included when ?include=rollout is used"}}}]},"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},"version":{"type":"string","minLength":1,"maxLength":256},"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","version","createdAt","setupFingerprints","workspaceId"]},"CreateReleaseRequest":{"type":"object","properties":{"project":{"type":"string","maxLength":100,"description":"Project ID or name"},"version":{"type":"string","minLength":1,"maxLength":256},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"OperatorCapabilityReport":{"type":"object","properties":{"key":{"type":"string","minLength":1,"maxLength":128},"state":{"$ref":"#/components/schemas/OperatorCapabilityState"},"detail":{"type":"string","nullable":true,"maxLength":512}},"required":["key","state"]},"OperatorCapabilityState":{"type":"string","enum":["granted","denied","unavailable"]},"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"},"version":{"type":"string","minLength":1,"maxLength":256},"gitMetadata":{"$ref":"#/components/schemas/GitMetadata"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","version","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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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"},"protocol":{"type":"string","enum":["http","tcp"]},"host":{"type":"string","minLength":1},"port":{"type":"integer","minimum":1,"maximum":65535},"wildcardHost":{"type":"string"}},"required":["url","protocol","host","port"]},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"platform":{"type":"string"}},"required":["arc","resources","status","platform"]},"CreateDeploymentResponse":{"type":"object","properties":{"deployment":{"$ref":"#/components/schemas/Deployment"},"deploymentModel":{"type":"string","enum":["push","pull"],"description":"Effective deployment model persisted for the deployment."},"token":{"type":"string","description":"Deployment token (only returned when using deployment group token)"}},"required":["deployment","deploymentModel"]},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"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."},"operatorScope":{"type":"string","minLength":1,"maxLength":512,"description":"Display-only scope reported by the Operator manifest."},"operatorPermission":{"type":"string","minLength":1,"maxLength":64,"description":"Display-only permission tier reported by the Operator manifest."},"initialDesiredRelease":{"type":"string","enum":["active","none"],"default":"active","description":"Desired-release selection for a new deployment. Use none to register an environment without initially requesting a release; later updates can assign one."}},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."}]},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Optional deployment subdomain under the project's generated-domain parent. Operator-only and requires a custom project domain; customer deploy-link tokens and the shared system domain are rejected. Omit to generate a random subdomain."},"platform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"description":"Runtime metadata for deployment\n\nStores deployment state that needs to persist across step calls."},"scheduleReconciliation":{"type":"boolean","default":false},"deploymentProtocolVersion":{"$ref":"#/components/schemas/DeploymentProtocolVersion"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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"},"DeploymentInputsResponse":{"type":"object","properties":{"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","machines","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."}},"values":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/StackInputValueRequest"},"description":"Current non-secret input values. Secret values are never returned."},"providedInputIds":{"type":"array","items":{"type":"string"},"description":"Input IDs that currently have a value, including redacted secrets."}},"required":["inputs","values","providedInputIds"]},"UpdateDeploymentInputsResponse":{"allOf":[{"$ref":"#/components/schemas/DeploymentInputsResponse"},{"type":"object","properties":{"runtimeUpdateRequested":{"type":"boolean"}},"required":["runtimeUpdateRequested"]}]},"UpdateDeploymentInputsRequest":{"type":"object","properties":{"inputValues":{"$ref":"#/components/schemas/StackInputValuesRequest"},"clearInputIds":{"type":"array","items":{"type":"string"},"default":[]}},"additionalProperties":false},"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"},"publicSubdomain":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([a-z0-9-]*[a-z0-9])?$","description":"Operator-pinned deployment subdomain for this setup token."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms this manager can handle"},"cloud":{"type":"string","nullable":true,"enum":["aws","gcp","azure","kubernetes","machines","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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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":{"actor":{"oneOf":[{"type":"object","properties":{"email":{"type":"string","nullable":true,"description":"User email when the principal is a user."},"id":{"type":"string","description":"Stable user or service-account identifier."},"kind":{"type":"string","enum":["user","serviceAccount"],"description":"Type of authenticated principal that requested an event."}},"required":["id","kind"],"description":"Authenticated principal that requested a deployment intent event."},{"nullable":true}]},"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."}},"required":["project"]},"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","waiting-for-machines","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"]},"PrepareOperatorManifestPackageResponse":{"type":"object","properties":{"package":{"$ref":"#/components/schemas/Package"}},"required":["package"]},"PrepareOperatorManifestPackageRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"}},"required":["project"],"additionalProperties":false},"RenderOperatorManifestResponse":{"type":"object","properties":{"manifest":{"type":"string","description":"Rendered multi-document Kubernetes manifest"},"applyCommand":{"type":"string","description":"kubectl command for applying the manifest from a file"},"filename":{"type":"string","description":"Suggested local filename"},"managerUrl":{"type":"string","format":"uri","description":"Manager URL embedded in the manifest"},"imagePending":{"type":"boolean","description":"True when the operator image is still building. The manifest contains a placeholder image () and must not be applied yet — re-render once the operator-image package is ready to get the real image."}},"required":["manifest","applyCommand","filename","managerUrl","imagePending"]},"RenderOperatorManifestRequest":{"type":"object","properties":{"project":{"$ref":"#/components/schemas/ProjectIDOrNameQueryParam"},"format":{"type":"string","enum":["raw","helm"],"default":"raw","description":"raw: a kubectl-applyable manifest for one cluster. helm: a paste-into-your-chart template whose namespace and environment name come from Helm at install time."},"environmentName":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!prj[-_])[a-z0-9](-?[a-z0-9])*$","description":"Per-environment identity. Required for raw output, ignored for helm.","example":"my-app"},"namespace":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]([-a-z0-9]*[a-z0-9])?$","description":"Namespace to observe and install into. Omit for helm to use the release namespace."},"scope":{"type":"string","enum":["namespace","cluster"],"default":"namespace","description":"namespace: a namespaced Role that manages the install namespace. cluster: a ClusterRole that manages every namespace."},"labelSelector":{"type":"string","minLength":1,"maxLength":256,"description":"Optional Kubernetes label selector narrowing what is managed, applied within the scope."},"permission":{"type":"string","enum":["observe"],"default":"observe","description":"Operator permission tier"},"operatorImagePackageId":{"type":"string","pattern":"pkg_[0-9a-z]{28}$","description":"Ready operator-image package to use for the Operator image. If omitted, the latest ready operator-image package for the project is used.","example":"pkg_jebo2o5jmm7raefl2m1pe3cz"},"deploymentGroupToken":{"type":"string","minLength":1,"description":"Deployment-group token embedded in the operator Secret"},"logCollector":{"type":"object","properties":{"enabled":{"type":"boolean","default":false}},"description":"Enable the node log collector DaemonSet for raw pod logs."}},"required":["project","deploymentGroupToken"],"additionalProperties":false},"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"]},"EventListItemResponse":{"allOf":[{"$ref":"#/components/schemas/Event"},{"type":"object","properties":{"releaseCreatedAt":{"type":"string","format":"date-time","description":"createdAt of the event's referenced release, included when ?include=releaseCreatedAt is used"}}}]},"ListMachinesJoinTokensResponse":{"type":"object","properties":{"tokens":{"type":"array","items":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"}}},"required":["tokens"]},"MachinesJoinTokenSummary":{"type":"object","properties":{"id":{"type":"string"},"createdAt":{"type":"string"},"createdBy":{"type":"string"},"expiresAt":{"type":"string","nullable":true},"maxJoins":{"type":"integer","nullable":true},"joinCount":{"type":"integer"},"lastUsedAt":{"type":"string","nullable":true},"revokedAt":{"type":"string","nullable":true}},"required":["id","createdAt","createdBy","joinCount"]},"CreateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RotateMachinesJoinTokenResponse":{"type":"object","properties":{"joinToken":{"type":"string"},"controlPlaneUrl":{"type":"string","format":"uri"},"clusterId":{"type":"string"},"token":{"$ref":"#/components/schemas/MachinesJoinTokenSummary"},"cliInstallScriptUrl":{"type":"string","nullable":true,"format":"uri","description":"Deploy CLI install script URL, or null when no ready CLI package exists."},"cliCommandName":{"type":"string","nullable":true,"description":"CLI command name to use in join instructions."}},"required":["joinToken","controlPlaneUrl","clusterId","token","cliInstallScriptUrl","cliCommandName"]},"RevokeMachinesJoinTokenResponse":{"type":"object","properties":{"tokenId":{"type":"string"},"revoked":{"type":"boolean"}},"required":["tokenId","revoked"]},"ListMachinesInventoryResponse":{"type":"object","properties":{"machines":{"type":"array","items":{"$ref":"#/components/schemas/MachinesInventoryItem"}}},"required":["machines"]},"MachinesInventoryItem":{"type":"object","properties":{"machineId":{"type":"string"},"status":{"type":"string"},"capacityGroup":{"type":"string"},"zone":{"type":"string"},"cpu":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"memory":{"$ref":"#/components/schemas/MachinesCapacityMetric"},"storage":{"allOf":[{"$ref":"#/components/schemas/MachinesCapacityMetric"}],"nullable":true},"drainBlockers":{"type":"array","items":{"$ref":"#/components/schemas/MachinesDrainBlocker"}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"overlayIp":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"horizondVersion":{"type":"string","nullable":true},"localOverrides":{"type":"array","items":{"$ref":"#/components/schemas/MachinesLocalOverrideObservation"}},"localOverridesObservedAt":{"type":"string","nullable":true},"replicaCount":{"type":"integer"}},"required":["machineId","status","capacityGroup","zone","cpu","memory","drainBlockers","drainForce","lastHeartbeat","localOverrides","replicaCount"]},"MachinesCapacityMetric":{"type":"object","properties":{"allocated":{"type":"number"},"systemReserve":{"type":"number"},"total":{"type":"number"}},"required":["allocated","systemReserve","total"]},"MachinesDrainBlocker":{"type":"object","properties":{"reason":{"type":"string"},"workloadId":{"type":"string","nullable":true},"workloadName":{"type":"string","nullable":true},"replicaId":{"type":"string","nullable":true},"schedulingMode":{"type":"string","nullable":true},"state":{"type":"string","nullable":true}},"required":["reason"]},"MachinesLocalOverrideObservation":{"type":"object","properties":{"activeDigest":{"type":"string","nullable":true},"actor":{"type":"string","nullable":true},"baseAssignmentHash":{"type":"string"},"baseDigest":{"type":"string","nullable":true},"candidateDigest":{"type":"string","nullable":true},"createdAt":{"type":"string","nullable":true},"failureCategory":{"type":"string","nullable":true},"fallbackDigest":{"type":"string","nullable":true},"forcedStop":{"type":"boolean","nullable":true},"healthySince":{"type":"string","nullable":true},"incidentId":{"type":"string","nullable":true},"lifecycle":{"type":"string"},"phaseStartedAt":{"type":"string","nullable":true},"replicaId":{"type":"string"},"workloadName":{"type":"string"}},"required":["baseAssignmentHash","lifecycle","replicaId","workloadName"]},"CancelMachinesMachineDrainResponse":{"type":"object","properties":{"machineId":{"type":"string"},"cancelled":{"type":"boolean"}},"required":["machineId","cancelled"]},"DrainMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"requested":{"type":"boolean"}},"required":["machineId","requested"]},"DrainMachinesMachineRequest":{"type":"object","properties":{"deadlineSeconds":{"type":"integer","nullable":true,"minimum":0},"force":{"type":"boolean"}}},"RemoveMachinesMachineResponse":{"type":"object","properties":{"machineId":{"type":"string"},"removed":{"type":"boolean"}},"required":["machineId","removed"]},"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","machines","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":"Delivery mode for this command (push/pull), derived from the target at creation time"},"target":{"type":"object","nullable":true,"properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to; null on commands created before target routing"},"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","target","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"},"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Resource the command is addressed to"},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How the command is delivered to its target"}},"required":["id","projectId","deploymentModel","target","deliveryMode"]},"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"},"target":{"type":"string","maxLength":255,"description":"Resource id the command is addressed to. Required when the deployment has more than one command-capable resource."},"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"]},"ResolvedCommandTarget":{"type":"object","properties":{"target":{"type":"object","properties":{"resourceId":{"type":"string","description":"The resource ID within the deployment's stack (e.g. a Worker/Container/Daemon id)."},"resourceType":{"type":"string","enum":["worker","container","daemon"],"description":"The kind of command-capable resource a command targets."}},"required":["resourceId","resourceType"],"description":"Identifies the specific resource a command is addressed to."},"deliveryMode":{"type":"string","enum":["push","pull"],"description":"How a command is delivered to its target resource.\n\nThis is a Commands-protocol-specific concept and is intentionally distinct\nfrom `DeploymentModel` (see `stack_settings.rs`), which governs the\ninfrastructure-level push/pull wiring for a deployment. Serialized\nlowercase for consistency with `CommandTargetType`."}},"required":["target","deliveryMode"]},"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"}}},"DispatchCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"DispatchCommandRequest":{"type":"object","properties":{"dispatchedAt":{"type":"string","format":"date-time","description":"When the command was dispatched"}},"required":["dispatchedAt"]},"CompleteCommandResponse":{"type":"object","properties":{"updated":{"type":"boolean","description":"Whether the command transitioned; false if it was already terminal"}},"required":["updated"]},"CompleteCommandRequest":{"type":"object","properties":{"state":{"type":"string","enum":["SUCCEEDED","FAILED","EXPIRED"],"description":"Terminal state to transition to"},"completedAt":{"type":"string","format":"date-time","description":"When the 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"}},"required":["state","completedAt"]},"IncrementCommandAttemptResponse":{"type":"object","properties":{"attempt":{"type":"integer","description":"The attempt number after the increment"}},"required":["attempt"]},"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","machines","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","machines","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"},"pinnedSubdomain":{"type":"string","nullable":true}},"required":["id","name","pinnedSubdomain"],"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","machines","local","test"],"description":"Represents the target cloud platform."},"description":"Platforms supported by the active release"},"requiresNetwork":{"type":"boolean","description":"Whether the stack contains resources that require cloud VPC networking"},"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","requiresNetwork","resourceCounts","publicEndpoints"]},"generatedDomain":{"type":"object","nullable":true,"properties":{"domain":{"type":"string"},"isSystem":{"type":"boolean"}},"required":["domain","isSystem"],"description":"Parent domain for generated deployment URLs. Chosen public subdomains are only allowed when isSystem is false."}},"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"},"buildInfo":{"type":"object","properties":{"alienSha":{"type":"string","description":"Alien source commit used to build the source CLI and agent binaries."},"horizonSha":{"type":"string","description":"Compute backend source revision used by optional package extensions, if applicable."},"machineBundleManifestUrl":{"type":"string","nullable":true,"description":"Machine runtime release manifest embedded into the generated CLI."},"platformSha":{"type":"string","description":"Source revision used to build the package service and optional extensions."},"sourceAgentBinarySha256":{"type":"string","nullable":true,"description":"SHA256 checksum of the source runtime helper binary shipped with the CLI package, when present."},"sourceCliBinarySha256":{"type":"string","description":"SHA256 checksum of the source deploy CLI binary before white-label config is appended."}},"required":["alienSha","horizonSha","platformSha","sourceCliBinarySha256"],"description":"Source provenance for a generated CLI package."}},"required":["binaries","buildInfo"],"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","machines","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"},"readiness":{"type":"object","properties":{"status":{"type":"string","enum":["ready","notReady","unknown"]},"checks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"string","enum":["passed","failed","warning","unknown"]},"message":{"type":"string"},"checkedAt":{"type":"string"}},"required":["code","status","message","checkedAt"]}}},"required":["status","checks"]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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"]},"SlackInstallUrlResponse":{"type":"object","properties":{"url":{"type":"string","format":"uri"}},"required":["url"]},"SlackIntegrationStatus":{"type":"object","properties":{"connected":{"type":"boolean"},"slackTeamId":{"type":"string","nullable":true},"slackTeamName":{"type":"string","nullable":true},"installedByUserId":{"type":"string","nullable":true},"installedAt":{"type":"string","nullable":true},"notificationChannelId":{"type":"string","nullable":true}},"required":["connected","slackTeamId","slackTeamName","installedByUserId","installedAt","notificationChannelId"]},"SlackChannelsResponse":{"type":"object","properties":{"channels":{"type":"array","items":{"$ref":"#/components/schemas/SlackChannel"}}},"required":["channels"]},"SlackChannel":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isMember":{"type":"boolean"}},"required":["id","name","isMember"]},"SlackNotificationChannelResponse":{"type":"object","properties":{"notificationChannelId":{"type":"string","nullable":true},"warning":{"type":"string","nullable":true}},"required":["notificationChannelId","warning"]},"SlackNotificationChannelRequest":{"type":"object","properties":{"channelId":{"type":"string","nullable":true}},"required":["channelId"]},"AgentSessionListResponse":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionListItem"}}},"required":["sessions"]},"AgentSessionListItem":{"type":"object","properties":{"id":{"type":"string"},"triggerType":{"type":"string"},"subjectId":{"type":"string"},"subject":{"$ref":"#/components/schemas/AgentSessionSubject"},"status":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"}},"required":["id","triggerType","subjectId","subject","status","createdAt","updatedAt"]},"AgentSessionSubject":{"type":"object","properties":{"deploymentName":{"type":"string","nullable":true},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"releaseId":{"type":"string","nullable":true},"releaseCommitMessage":{"type":"string","nullable":true},"releaseCommitRef":{"type":"string","nullable":true},"projectId":{"type":"string","nullable":true},"projectName":{"type":"string","nullable":true}},"required":["deploymentName","deploymentGroupId","deploymentGroupName","releaseId","releaseCommitMessage","releaseCommitRef","projectId","projectName"]},"AgentSessionDetail":{"allOf":[{"$ref":"#/components/schemas/AgentSessionListItem"},{"type":"object","properties":{"resultText":{"type":"string","nullable":true},"toolNames":{"type":"array","nullable":true,"items":{"type":"string"}},"error":{"type":"string","nullable":true},"pendingApproval":{"type":"object","nullable":true,"properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["resultText","toolNames","error","pendingApproval"]}]},"AgentSessionEventsResponse":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/AgentSessionEvent"}},"latestSeq":{"type":"number"},"hasMore":{"type":"boolean"}},"required":["events","latestSeq","hasMore"]},"AgentSessionEvent":{"oneOf":[{"$ref":"#/components/schemas/AgentSessionStatusEvent"},{"$ref":"#/components/schemas/AgentSessionStepEvent"},{"$ref":"#/components/schemas/AgentSessionToolCallEvent"},{"$ref":"#/components/schemas/AgentSessionToolResultEvent"},{"$ref":"#/components/schemas/AgentSessionMarkdownEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalRequestedEvent"},{"$ref":"#/components/schemas/AgentSessionApprovalGrantedEvent"},{"$ref":"#/components/schemas/AgentSessionRestartedEvent"},{"$ref":"#/components/schemas/AgentSessionEventsTruncatedEvent"}],"discriminator":{"propertyName":"type","mapping":{"status":"#/components/schemas/AgentSessionStatusEvent","step":"#/components/schemas/AgentSessionStepEvent","tool_call":"#/components/schemas/AgentSessionToolCallEvent","tool_result":"#/components/schemas/AgentSessionToolResultEvent","markdown":"#/components/schemas/AgentSessionMarkdownEvent","approval_requested":"#/components/schemas/AgentSessionApprovalRequestedEvent","approval_granted":"#/components/schemas/AgentSessionApprovalGrantedEvent","session_restarted":"#/components/schemas/AgentSessionRestartedEvent","events_truncated":"#/components/schemas/AgentSessionEventsTruncatedEvent"}}},"AgentSessionStatusEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["status"]},"payload":{"type":"object","properties":{"status":{"type":"string"},"error":{"type":"string"}},"required":["status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionStepEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["step"]},"payload":{"type":"object","properties":{"stepId":{"type":"string"},"title":{"type":"string"},"status":{"type":"string","enum":["in_progress","complete","error"]}},"required":["stepId","title","status"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolCallEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_call"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionToolResultEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["tool_result"]},"payload":{"type":"object","properties":{"toolCallId":{"type":"string","nullable":true},"toolName":{"type":"string","nullable":true},"ok":{"type":"boolean"},"output":{"nullable":true}},"required":["toolCallId","toolName","ok"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionMarkdownEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["markdown"]},"payload":{"type":"object","properties":{"text":{"type":"string"}},"required":["text"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalRequestedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_requested"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"toolCallId":{"type":"string"},"toolName":{"type":"string"},"input":{"nullable":true}},"required":["approvalId","toolCallId","toolName"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApprovalGrantedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["approval_granted"]},"payload":{"type":"object","properties":{"approvalId":{"type":"string"},"approvedByUserId":{"type":"string"},"approvedByName":{"type":"string","nullable":true},"source":{"type":"string","enum":["dashboard","slack"]}},"required":["approvalId","approvedByUserId","approvedByName","source"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionRestartedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["session_restarted"]},"payload":{"type":"object","properties":{"reason":{"type":"string"}},"required":["reason"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionEventsTruncatedEvent":{"type":"object","properties":{"seq":{"type":"number"},"createdAt":{"type":"string"},"type":{"type":"string","enum":["events_truncated"]},"payload":{"type":"object","properties":{"limit":{"type":"number"}},"required":["limit"]}},"required":["seq","createdAt","type","payload"]},"AgentSessionApproveResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"resumed":{"type":"boolean"}},"required":["jobId","status","resumed"]},"AgentSessionStopResponse":{"type":"object","properties":{"jobId":{"type":"string"},"status":{"type":"string"},"canceled":{"type":"boolean"}},"required":["jobId","status","canceled"]},"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":1,"maxLength":63,"pattern":"^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$","description":"Public subdomain for auto-generated domains"},"status":{"type":"string","enum":["pending","preflights-failed","initial-setup","initial-setup-failed","provisioning","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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"},"operatorScope":{"type":"string","nullable":true,"description":"Display-only scope reported by the Operator manifest"},"operatorPermission":{"type":"string","nullable":true,"description":"Display-only permission tier reported by the Operator manifest"},"operatorVersion":{"type":"string","nullable":true,"description":"Version reported by the Operator"},"capabilities":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Capability state reported by the Operator"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment status"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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"},"SyncAcquireResponseDeployment":{"type":"object","properties":{"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"ID of the 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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"inputValues":{"type":"object","properties":{},"additionalProperties":{"nullable":true},"description":"Deployer-provided stack input values, keyed by input id. A resource\ngated with `.enabled(input)` and a Live lifecycle follows these\nvalues; a missing key falls back to the input's declared boolean\ndefault. Suppliers must not place secret-kind input values here:\nthis map serializes and debug-prints unredacted."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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"]},"SyncContextRequest":{"type":"object","properties":{"managerId":{"allOf":[{"$ref":"#/components/schemas/ManagerID"},{"description":"Manager requesting the context. Manager-scoped tokens are constrained to their own manager ID."}]},"deploymentId":{"type":"string","pattern":"dep_[0-9a-z]{28}$","description":"Unique identifier for the deployment.","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"}},"required":["deploymentId"],"additionalProperties":false},"SyncAcquireResponse":{"type":"object","properties":{"deployments":{"type":"array","items":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"description":"Filter by deployment statuses (default: all deployment statuses)"},"platforms":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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."},"limit":{"type":"integer","minimum":1,"maximum":100,"description":"Maximum number of deployments to acquire (default: 10)"}},"required":["session","deploymentModel"],"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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."},"horizondArtifacts":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"sha256":{"type":"string","description":"SHA-256 digest for the artifact payload."},"url":{"type":"string","description":"HTTPS URL for the artifact."}},"required":["sha256","url"],"description":"Download artifact for one horizond release platform."},"description":"Per-architecture horizond artifacts by release-platform key."},"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","horizondArtifacts","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"]}]},{"allOf":[{"oneOf":[{"allOf":[{"type":"object","properties":{"clusterEndpoint":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretArn":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Aurora Serverless v2 binding."},{"type":"object","properties":{"service":{"type":"string","enum":["aurora"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretName":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Cloud SQL binding."},{"type":"object","properties":{"service":{"type":"string","enum":["cloud-sql"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"passwordSecretUri":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes 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 Flexible Server binding."},{"type":"object","properties":{"service":{"type":"string","enum":["flexible-server"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string","description":"Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Operator-provided / BYO database binding."},{"type":"object","properties":{"service":{"type":"string","enum":["external"]}},"required":["service"]}]},{"allOf":[{"type":"object","properties":{"database":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"host":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"password":{"type":"string"},"port":{"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"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"},"username":{"oneOf":[{"nullable":true},{"type":"string"},{"type":"object","properties":{"secretRef":{"type":"object","properties":{"key":{"type":"string"},"name":{"type":"string"}},"required":["key","name"],"description":"Reference to a Kubernetes Secret"}},"required":["secretRef"]}],"description":"Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret"}},"required":["password"],"description":"Local embedded Postgres binding."},{"type":"object","properties":{"service":{"type":"string","enum":["local-postgres"]}},"required":["service"]}]}],"description":"Connection details for a Postgres database, one variant per backend."},{"type":"object","properties":{"type":{"type":"string","enum":["postgres"]}},"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."},"inputValues":{"type":"object","properties":{},"additionalProperties":{"nullable":true},"description":"Deployer-provided stack input values, keyed by input id. A resource\ngated with `.enabled(input)` and a Live lifecycle follows these\nvalues; a missing key falls back to the input's declared boolean\ndefault. Suppliers must not place secret-kind input values here:\nthis map serializes and debug-prints unredacted."},"labelDomain":{"type":"string","nullable":true,"description":"DNS-style label domain used for Kubernetes resource ownership labels.\n\nDefaults to `alien.dev` when absent. Whitelabeled Operator builds set this\nso generated workloads and optional log collectors share the same label\nnamespace."},"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 read auth headers from a runtime-only\nsecret. Runtime-less Containers and Daemons receive standard OTEL auth\nvariables only at the final hosting boundary: Local passes them directly\nto the process and Kubernetes projects them from a per-workload Secret."},{"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}`"},"observeAllNamespaces":{"type":"boolean","description":"When true the observe pass reports raw resources across every namespace\n(cluster scope); otherwise it stays within the operator's own namespace.\nThe label selector, if any, still filters within whichever scope applies.\nIgnored by cloud observers."},"observeLabelSelector":{"type":"string","nullable":true,"description":"Kubernetes label selector that narrows which raw resources the observe\npass reports (e.g. `app.kubernetes.io/part-of=my-app`). `None` observes\neverything in the namespace. Ignored by cloud observers."},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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":{"failure_domains":{"oneOf":[{"type":"object","properties":{"selectedFailureDomains":{"type":"array","items":{"type":"string"},"description":"Concrete provider domains selected during setup.\nEmpty delegates deterministic selection to the provider setup implementation."},"spread":{"type":"integer","minimum":0,"description":"Number of distinct failure domains across which new stateful replicas may be spread."}},"required":["spread"],"description":"Failure-domain policy selected for a compute pool."},{"nullable":true}]},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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","machines","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"},"lastSyncedSecretNames":{"type":"array","items":{"type":"string"},"description":"Exact vault keys owned by the deployment secret synchronizer. This\ninventory lets a later snapshot delete removed keys without listing or\ntouching unrelated values in the same vault."},"pendingPreparedStack":{"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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}]},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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."},"setupUpdateAuthorization":{"oneOf":[{"type":"object","properties":{"baselineFrozenDigest":{"type":"string","description":"Frozen resource projection from the last successful deployment."},"nonce":{"type":"string","description":"Unique revision used by persistence layers for compare-and-swap updates."},"releaseId":{"type":"string","description":"Release whose stack was prepared by setup."},"setupFingerprint":{"type":"string","description":"Exact setup artifact revision that authored this authority."},"setupFingerprintVersion":{"type":"integer","minimum":0,"description":"Setup fingerprint contract version."},"setupTarget":{"type":"string","description":"Stable setup target recorded on the imported deployment."},"targetFrozenDigest":{"type":"string","description":"Frozen resource projection prepared by the setup re-import."}},"required":["baselineFrozenDigest","nonce","releaseId","setupFingerprint","setupFingerprintVersion","setupTarget","targetFrozenDigest"],"description":"One-shot authority for a setup re-import to replace setup-owned resources."},{"nullable":true}]}},"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","machines","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","machines","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":"Reference to a resource by its stable id and resource type."},"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"targetRelease":{"oneOf":[{"type":"object","properties":{"description":{"type":"string","nullable":true,"description":"Short description of the release"},"releaseId":{"type":"string","nullable":true,"description":"Release ID (e.g., rel_xyz). `None` for an observe deployment, which has no\nAlien-assigned release — the platform resolves a release from `version`."},"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","machines","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":"Reference to a resource by its stable id and resource type."},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":"string","nullable":true,"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"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","machines","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":["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."},"resourceHeartbeats":{"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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."},"observedInventoryBatches":{"type":"array","items":{"type":"object","properties":{"backend":{"type":"string","enum":["aws","gcp","azure","kubernetes","local","managed","external","test"],"description":"Backend whose observer produced this snapshot."},"complete":{"type":"boolean","description":"Whether this batch is a complete replacement for the scope. Complete\nbatches tombstone previously observed rows in the same scope when they\nare absent from `resources`."},"controllerPlatform":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"inventoryScope":{"type":"string","description":"Stable scope for the provider list operation that produced this batch."},"observedAt":{"type":"string","format":"date-time","description":"Time the inventory scope was observed."},"resources":{"type":"array","items":{"type":"object","properties":{"alienResourceId":{"type":"string","nullable":true},"attributes":{"type":"object","properties":{},"additionalProperties":{"nullable":true}},"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"counts":{"oneOf":[{"type":"object","properties":{"current":{"type":"integer","nullable":true,"minimum":0},"desired":{"type":"integer","nullable":true,"minimum":0},"ready":{"type":"integer","nullable":true,"minimum":0}}},{"nullable":true}]},"deploymentId":{"type":"string","nullable":true},"displayName":{"type":"string"},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"labels":{"type":"object","properties":{},"additionalProperties":{"type":"string"}},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"namespace":{"type":"string","nullable":true},"partial":{"type":"boolean"},"providerKind":{"type":"string","description":"Provider-native kind, such as `apps/v1/Deployment`,\n`AWS::S3::Bucket`, `storage.googleapis.com/Bucket`, or an Azure\nresource type."},"providerStale":{"type":"boolean"},"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"]}},"rawIdentity":{"type":"string","description":"Provider-native stable identity: Kubernetes object identity, cloud ARN,\nGCP full resource name, Azure resource id, etc."},"region":{"type":"string","nullable":true},"resourceTypeHint":{"oneOf":[{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior."},{"nullable":true}]},"scope":{"type":"string","nullable":true},"version":{"type":"string","nullable":true,"description":"Release/version identity observed from the provider resource, when available."}},"required":["displayName","health","lifecycle","partial","providerKind","providerStale","rawIdentity"]}},"sourceKind":{"type":"string","description":"Writer/source for this inventory pass, such as `operator` or\n`manager-observer`."}},"required":["backend","complete","controllerPlatform","inventoryScope","observedAt","resources","sourceKind"]},"description":"Observed raw-resource inventory batches read during this step."},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/OperatorCapabilityReport"},"description":"Operator-reported runtime capabilities."},"operatorVersion":{"type":"string","minLength":1,"maxLength":128,"description":"Operator binary version reported by the runtime."}},"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","machines","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","machines","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/invitations/{token}":{"get":{"operationId":"getWorkspaceInvitationPreview","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation preview.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitationPreview"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/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/user/invitations/{token}/accept":{"post":{"operationId":"acceptWorkspaceInvitation","parameters":[{"schema":{"type":"string","minLength":1,"maxLength":128},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Invitation accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptWorkspaceInvitationResponse"}}}},"404":{"description":"Invitation not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation unavailable.","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/workspaces/{id}/settings":{"get":{"operationId":"getWorkspaceSettings","description":"Read the ai-agent settings for a workspace. Returns defaults (`enabled: true`, `debugPermissionMode: auto`) when the workspace has never customized them.","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"getSettings","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 ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}},"patch":{"operationId":"updateWorkspaceSettings","description":"Update the ai-agent settings for a workspace. Supports `debugPermissionMode` (`ask` requires human approval on every ai-agent debug command, `auto` runs them without asking) and `enabled` (`false` turns the ai-agent off so incoming triggers are rejected before any session runs).","x-speakeasy-group":"workspaces","x-speakeasy-name-override":"updateSettings","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":{"$ref":"#/components/schemas/UpdateWorkspaceSettingsRequest"}}}},"responses":{"200":{"description":"Updated ai-agent settings.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSettings"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations":{"get":{"operationId":"listWorkspaceInvitations","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":"Pending invitations.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/WorkspaceInvitation"}}},"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":"createWorkspaceInvitation","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"},"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["email","role"]}}}},"responses":{"201":{"description":"Invitation created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"403":{"description":"Seat limit reached.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Workspace not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Invitation already exists.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/workspaces/{id}/invitations/{invitationId}/resend":{"post":{"operationId":"resendWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation email sent again.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitation"}}}},"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}/invitations/{invitationId}":{"delete":{"operationId":"revokeWorkspaceInvitation","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":1,"maxLength":128},"required":true,"name":"invitationId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Invitation revoked."},"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}/invite-link":{"get":{"operationId":"getWorkspaceInviteLink","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":"Active invite link.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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"}}}}}},"put":{"operationId":"createWorkspaceInviteLink","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":{"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"required":["role"]}}}},"responses":{"200":{"description":"Invite link created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInviteLink"}}}},"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":"revokeWorkspaceInviteLink","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":"Invite link revoked."},"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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":{"binaryTargets":{"type":"array","items":{"type":"string","enum":["windows-x64","linux-x64","linux-arm64","darwin-arm64"],"description":"Target OS and architecture for compiled binaries.\n\nUsed as keys in package output maps (CLI binaries, Terraform providers, etc.)\nand for cross-compilation target selection during builds."},"description":"Binary targets required by this package's setup consumer.\n\nOlder package rows omit this field and retain the historical all-target\nbehavior. Callers creating new packages should state their target set."},"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."},"operatorImage":{"type":"object","nullable":true,"properties":{"brand":{"type":"string","nullable":true,"description":"Short brand slug used for generated resource names."},"displayName":{"type":"string","description":"Human-friendly display name for logs and startup messages"},"envPrefix":{"type":"string","nullable":true,"description":"Branded environment variable prefix (e.g., \"ACME\")."},"labelDomain":{"type":"string","nullable":true,"description":"Branded Kubernetes/cloud label domain (e.g., \"acme.dev\")."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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}/deployment-link-setup":{"get":{"operationId":"getProjectDeploymentLinkSetup","description":"Get the active release stack and portal-visible setup availability for deployment-link configuration.","x-speakeasy-group":"projects","x-speakeasy-name-override":"getDeploymentLinkSetup","parameters":[{"schema":{"$ref":"#/components/schemas/ProjectIDOrNamePathParam"},"required":true,"description":"Project ID or name.","name":"idOrName","in":"path","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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-link setup retrieved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentLinkSetupResponse"}}}},"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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/by-name":{"put":{"operationId":"ensureDeploymentGroupByName","tags":["deployment-groups"],"summary":"Get or create a deployment group by project and name","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/EnsureDeploymentGroupByNameRequest"}}}},"responses":{"200":{"description":"Deployment group returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentGroup"}}}},"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/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"}}}},"400":{"description":"Deployment setup configuration is invalid","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}/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","enum":["cli","cloudformation","helm","operator-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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","rollout"]},"description":"Optional fields to include: project, rollout"},"required":false,"description":"Optional fields to include: project, rollout","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","machines","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":{"200":{"description":"Existing deployment returned for idempotent deployment-group registration.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDeploymentResponse"}}}},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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","waiting-for-machines","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.\n\nFor observe-only deployments with no release or stack state, `Running`\nmeans the Operator is attached. Connectivity comes from `lastHeartbeatAt`;\nresource health comes from inventory and resource heartbeat data."},"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"responses":{"200":{"description":"Distinct environments retrieved.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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 a running or runtime-failed deployment. Running deployments start an update; failed deployments retry toward the selected 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 from the deployment's current lifecycle state.","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}/inputs":{"get":{"operationId":"getDeploymentInputs","description":"Get the active input definitions and current non-secret values for a deployment.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"getInputs","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 inputs returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentInputsResponse"}}}},"403":{"description":"Insufficient permission to read deployment inputs.","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"}}}}}},"patch":{"operationId":"updateDeploymentInputs","description":"Update runtime stack inputs, rebuild their environment-variable mappings, and request a deployment update when runtime configuration changes.","x-speakeasy-group":"deployments","x-speakeasy-name-override":"updateInputs","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/UpdateDeploymentInputsRequest"}}}},"responses":{"200":{"description":"Deployment inputs saved successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDeploymentInputsResponse"}}}},"400":{"description":"Input values are invalid for the deployment release.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update deployment inputs.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment, project, 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}/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"]}}}},"400":{"description":"Environment variables are invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"403":{"description":"Insufficient permission to update environment variables.","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}/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","machines","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/operator-manifests/prepare":{"post":{"operationId":"prepareOperatorManifestPackage","tags":["operator-manifests"],"summary":"Prepare the white-labeled Operator image for an Operate install","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/PrepareOperatorManifestPackageRequest"}}}},"responses":{"200":{"description":"Operator image package created or reused.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrepareOperatorManifestPackageResponse"}}}},"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/operator-manifests/render":{"post":{"operationId":"renderOperatorManifest","tags":["operator-manifests"],"summary":"Render a Kubernetes Operator manifest","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/RenderOperatorManifestRequest"}}}},"responses":{"200":{"description":"Operator manifest rendered successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenderOperatorManifestResponse"}}}},"404":{"description":"Project not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Operator image package is not ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Invalid platform or manager configuration.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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":"array","items":{"type":"string","enum":["releaseCreatedAt"]},"description":"Optional fields to include: releaseCreatedAt"},"required":false,"description":"Optional fields to include: releaseCreatedAt","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 events.","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/EventListItemResponse"},"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/machines/deployments/{id}/join-tokens":{"get":{"operationId":"listMachinesJoinTokens","x-speakeasy-group":"machines","x-speakeasy-name-override":"listJoinTokens","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":"Join tokens for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesJoinTokensResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"createMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"createJoinToken","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":"Newly minted Machines join token. Existing tokens keep working; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/rotate":{"post":{"operationId":"rotateMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"rotateJoinToken","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":"Rotated Machines join token. Revokes all existing tokens, then mints a new one; the token value is returned only once.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/join-tokens/{tokenId}":{"delete":{"operationId":"revokeMachinesJoinToken","x-speakeasy-group":"machines","x-speakeasy-name-override":"revokeJoinToken","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":1},"required":true,"name":"tokenId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines join token revocation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeMachinesJoinTokenResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/inventory":{"get":{"operationId":"listMachinesInventory","x-speakeasy-group":"machines","x-speakeasy-name-override":"listInventory","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":"Machine inventory for a Machines deployment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListMachinesInventoryResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}/drain":{"delete":{"operationId":"cancelMachinesMachineDrain","x-speakeasy-group":"machines","x-speakeasy-name-override":"cancelMachineDrain","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines drain cancellation result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelMachinesMachineDrainResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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"}}}}}},"post":{"operationId":"drainMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"drainMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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/DrainMachinesMachineRequest"}}}},"responses":{"200":{"description":"Machines drain request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DrainMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/machines/deployments/{id}/machines/{machineId}":{"delete":{"operationId":"removeMachinesMachine","x-speakeasy-group":"machines","x-speakeasy-name-override":"removeMachine","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":1},"required":true,"name":"machineId","in":"path"},{"schema":{"type":"string","minLength":4,"maxLength":100,"pattern":"^(?!ws[-_])[a-z0-9](-?[a-z0-9])*$","description":"Workspace name. Required for user/session/OAuth requests. Optional for API keys because API keys are workspace-scoped; if provided with an API key, it must match the key's workspace.","example":"my-workspace"},"required":false,"description":"Workspace name. Required for user/session/OAuth requests. Optional for API 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":"Machines remove request result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMachinesMachineResponse"}}}},"400":{"description":"Deployment is not a provisioned Machines deployment.","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/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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"}}}},"400":{"description":"Deployment is not ready or has no assigned manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"404":{"description":"Deployment not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"The deployment manager is unavailable.","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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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/target":{"get":{"operationId":"resolveCommandTarget","description":"Resolve which resource a command for this deployment would be addressed to, and how it would be delivered. Fails when the deployment has no command-capable resources, or more than one and no explicit target was named.","x-speakeasy-group":"commands","x-speakeasy-name-override":"resolveTarget","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","pattern":"dep_[0-9a-z]{28}$","description":"Deployment to resolve the target for","example":"dep_0c29fq4a2yjb7kx3smwdgxlc"},"required":true,"description":"Deployment to resolve the target for","name":"deploymentId","in":"query"},{"schema":{"type":"string","maxLength":255,"description":"Explicit resource id to resolve; must be a command-capable resource"},"required":false,"description":"Explicit resource id to resolve; must be a command-capable resource","name":"target","in":"query"}],"responses":{"200":{"description":"Resolved command target.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolvedCommandTarget"}}}},"404":{"description":"Deployment or target not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"409":{"description":"Multiple command-capable targets; an explicit target is required.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"422":{"description":"Deployment has no command-capable targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"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/commands/{id}/dispatch":{"post":{"operationId":"dispatchCommand","description":"Atomically mark a command DISPATCHED unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"dispatch","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/DispatchCommandRequest"}}}},"responses":{"200":{"description":"Dispatch attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/complete":{"post":{"operationId":"completeCommand","description":"Atomically transition a command to a terminal state (SUCCEEDED, FAILED, or EXPIRED) unless it is already terminal. Returns whether the transition was applied.","x-speakeasy-group":"commands","x-speakeasy-name-override":"complete","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/CompleteCommandRequest"}}}},"responses":{"200":{"description":"Completion attempt result.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteCommandResponse"}}}},"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"}}}}}}},"/v1/commands/{id}/increment-attempt":{"post":{"operationId":"incrementCommandAttempt","description":"Atomically increment the command's attempt counter and return the new value.","x-speakeasy-group":"commands","x-speakeasy-name-override":"incrementAttempt","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":"Attempt incremented.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IncrementCommandAttemptResponse"}}}},"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"}}}}}}},"/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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","machines","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"},{"schema":{"type":"string","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"description":"Represents the target cloud platform."},"required":false,"description":"Represents the target cloud platform.","name":"platform","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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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."},"publicEndpointTarget":{"oneOf":[{"type":"object","properties":{"mode":{"type":"string","enum":["machineAddresses"]}},"required":["mode"]},{"type":"object","properties":{"cnameTarget":{"type":"string","description":"DNS name or URL for the external load balancer."},"mode":{"type":"string","enum":["loadBalancer"]}},"required":["cnameTarget","mode"]},{"nullable":true}]}},"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_endpoint_subnet_name":{"type":"string","nullable":true,"description":"Name of the dedicated subnet that hosts Private Endpoints (e.g. for a\nPostgres Flexible Server). A Private Endpoint must not share the private\nsubnet, which is already claimed by the Container Apps environment's\n`infrastructure_subnet_id`. Required only when the stack contains a\nPostgres resource; otherwise unused."},"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/integrations/slack/install-url":{"post":{"operationId":"slackIntegrationInstallUrl","description":"Generate the Slack OAuth consent URL for this workspace.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"installUrl","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":"OAuth URL the dashboard should redirect the user to.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackInstallUrlResponse"}}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/status":{"get":{"operationId":"slackIntegrationStatus","description":"Return the Slack install for this workspace (if any).","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"status","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":"Status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackIntegrationStatus"}}}}}}},"/v1/integrations/slack/channels":{"get":{"operationId":"slackIntegrationChannels","description":"List public Slack channels for this workspace's install. Used by the dashboard's notification-channel picker.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"listChannels","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":"Public channels.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackChannelsResponse"}}}},"400":{"description":"Workspace not connected to Slack.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/notification-channel":{"put":{"operationId":"slackIntegrationSetNotificationChannel","description":"Configure which Slack channel receives ai-agent monitor reports.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"setNotificationChannel","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/SlackNotificationChannelRequest"}}}},"responses":{"200":{"description":"Channel saved.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlackNotificationChannelResponse"}}}},"400":{"description":"Not connected, or join failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/integrations/slack/installation":{"delete":{"operationId":"slackIntegrationUninstall","description":"Uninstall the Slack integration for this workspace. Revokes the bot token at Slack and deletes the row.","x-speakeasy-group":"slackIntegration","x-speakeasy-name-override":"uninstall","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":{"204":{"description":"Uninstalled."}}}},"/v1/agent-sessions":{"get":{"operationId":"listAgentSessions","description":"List ai-agent monitor sessions for this workspace. Newest first, capped at 50.","x-speakeasy-group":"agentSessions","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":"Sessions.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionListResponse"}}}}}}},"/v1/agent-sessions/{id}":{"get":{"operationId":"getAgentSession","description":"Retrieve one ai-agent monitor session by id.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"get","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":"Session.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionDetail"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/events":{"get":{"operationId":"listAgentSessionEvents","description":"Incrementally read a session's event log (steps, tool calls, report deltas, approvals, status transitions). Pass the previous response's `latestSeq` as `after` to fetch only new events.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"events","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"},{"schema":{"type":"integer","nullable":true,"minimum":0,"default":0},"required":false,"name":"after","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500,"default":200},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Events after the cursor, oldest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionEventsResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/approve":{"post":{"operationId":"approveAgentSession","description":"Approve a halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"approve","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":"Already resumed / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"202":{"description":"Approved; resume enqueued.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionApproveResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}}}}},"/v1/agent-sessions/{id}/stop":{"post":{"operationId":"stopAgentSession","description":"Stop (cancel) a running, queued, or halted ai-agent monitor session. Proxies to the ai-agent service, minting a fresh CLI session for the caller so the ai-agent's own auth applies. Idempotent — stopping an already-terminal session is a 200 no-op.","x-speakeasy-group":"agentSessions","x-speakeasy-name-override":"stop","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":"Already terminal / no-op.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"202":{"description":"Cancel accepted; session stopped.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSessionStopResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"503":{"description":"AI agent service is not configured.","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/context":{"post":{"operationId":"syncContext","description":"Get computed deployment state and configuration for a manager-side operation without acquiring the deployment reconciliation lock.","x-speakeasy-group":"sync","x-speakeasy-name-override":"context","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/SyncContextRequest"}}}},"responses":{"200":{"description":"Computed deployment context returned successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncAcquireResponseDeployment"}}}},"404":{"description":"Deployment not found or not assigned to this manager.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIError"}}}},"500":{"description":"Failed to build deployment context.","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":{"get":{"operationId":"listInventory","x-speakeasy-group":"resources","x-speakeasy-name-override":"listInventory","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":true,"description":"Filter by project ID or name.","name":"project","in":"query","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"schema":{"type":"string"},"required":false,"name":"deploymentGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"deploymentId","in":"query"}],"responses":{"200":{"description":"Unified managed and observed resource inventory rows.","content":{"application/json":{"schema":{"type":"object","properties":{"resources":{"type":"array","items":{"oneOf":[{"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"},"source":{"type":"string","enum":["managed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"}},"required":["resourceType","resourceId","name","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","deploymentCount","attentionCount","lastObservedAt","source","deploymentId","deploymentName"]},{"type":"object","properties":{"source":{"type":"string","enum":["observed"]},"deploymentId":{"type":"string"},"deploymentName":{"type":"string"},"deploymentGroupId":{"type":"string","nullable":true},"deploymentGroupName":{"type":"string","nullable":true},"resourceType":{"type":"string"},"resourceId":{"type":"string"},"name":{"type":"string"},"rawKind":{"type":"string"},"alienResourceId":{"type":"string","nullable":true},"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":["source","deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","name","rawKind","alienResourceId","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}":{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}},{"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","examples":{"projectName":{"value":"my-project"},"projectId":{"value":"prj_mcytp6z3j91f7tn5ryqsfwtr"}}}],"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"},"desiredImage":{"type":"string","nullable":true}},"required":["deploymentId","deploymentName","deploymentGroupId","deploymentGroupName","resourceType","resourceId","backend","controllerPlatform","health","lifecycle","message","partial","providerStale","platformStale","desiredCount","currentCount","readyCount","observedAt","desiredImage"]},"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","machines","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},"latestUpdateTimestamp":{"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}]},"observedImage":{"type":"string","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["azure"]}},"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"},"observedImage":{"type":"string","nullable":true},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","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","desiredMachines","events","healthyInstances","horizonClusterId","horizonStatus","latestUpdateTimestamp","status","unavailableInstances"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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","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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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":{"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},"drainProgress":{"oneOf":[{"type":"object","properties":{"blockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"force":{"type":"boolean"},"machineId":{"type":"string"},"replicaCount":{"type":"integer"},"stalled":{"type":"boolean"},"status":{"type":"string","enum":["draining","drained","terminating"]}},"required":["force","machineId","replicaCount","stalled","status"]},{"nullable":true}]},"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}]},"machines":{"type":"array","items":{"type":"object","properties":{"capacityGroup":{"type":"string"},"cpuCores":{"type":"number","nullable":true},"drainBlockers":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string"},"replicaId":{"type":"string"},"schedulingMode":{"type":"string"},"state":{"type":"string"},"workloadName":{"type":"string"}},"required":["reason","replicaId","schedulingMode","state","workloadName"]}},"drainDeadlineAt":{"type":"string","nullable":true},"drainForce":{"type":"boolean"},"drainRequestedAt":{"type":"string","nullable":true},"drainedAt":{"type":"string","nullable":true},"horizondVersion":{"type":"string","nullable":true},"lastHeartbeat":{"type":"string"},"machineId":{"type":"string"},"memoryBytes":{"type":"integer","nullable":true},"overlayIp":{"type":"string","nullable":true},"publicIp":{"type":"string","nullable":true},"replicaCount":{"type":"integer"},"status":{"type":"string"},"zone":{"type":"string"}},"required":["capacityGroup","drainForce","lastHeartbeat","machineId","replicaCount","status","zone"]}},"memory":{"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}}},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","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","machines","name","nodes","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["machines"]}},"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":{"clusterIdentifier":{"type":"string"},"endpoint":{"type":"string","nullable":true},"engineVersion":{"type":"string","nullable":true},"neverPauses":{"type":"boolean","description":"True when a `minCapacity: 0` instance has not reached 0 ACU over the observation\nwindow — it is silently paying always-on prices (auto-pause verification)."},"serverlessCapacity":{"type":"number","nullable":true,"description":"Latest sampled `ServerlessDatabaseCapacity` (ACU)."},"status":{"type":"object","properties":{"collectionIssues":{"type":"array","items":{"type":"object","properties":{"message":{"type":"string"},"reason":{"type":"string","enum":["forbidden","not-installed","api-unavailable","collection-failed","timed-out"]},"severity":{"type":"string","enum":["info","warning","error"]},"source":{"type":"string"}},"required":["message","reason","severity","source"]}},"health":{"type":"string","enum":["unknown","healthy","degraded","unhealthy"]},"lifecycle":{"type":"string","enum":["unknown","creating","updating","running","scaling","stopping","stopped","deleting","deleted","failed"]},"message":{"type":"string","nullable":true},"partial":{"type":"boolean"},"stale":{"type":"boolean"}},"required":["collectionIssues","health","lifecycle","partial","stale"]}},"required":["clusterIdentifier","neverPauses","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["aurora"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"databaseVersion":{"type":"string","nullable":true},"instanceName":{"type":"string"},"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"]}},"required":["instanceName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["cloudSql"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"serverName":{"type":"string"},"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"]},"version":{"type":"string","nullable":true}},"required":["serverName","status"]},{"type":"object","properties":{"backend":{"type":"string","enum":["flexibleServer"]}},"required":["backend"]}]},{"allOf":[{"type":"object","properties":{"name":{"type":"string"},"port":{"type":"integer","nullable":true,"minimum":0},"processRunning":{"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"]},"version":{"type":"string"}},"required":["name","processRunning","status","version"]},{"type":"object","properties":{"backend":{"type":"string","enum":["local"]}},"required":["backend"]}]}]},"resourceType":{"type":"string","enum":["postgres"]}},"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},"privateEndpointSubnetName":{"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","description":"Alien resource id, such as the `alien.Container` or `alien.Storage`\nresource id from the stack."},"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","machines","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/crates/alien-cli/src/commands/render.rs b/crates/alien-cli/src/commands/render.rs index c335479fd..9bf3b78a8 100644 --- a/crates/alien-cli/src/commands/render.rs +++ b/crates/alien-cli/src/commands/render.rs @@ -115,6 +115,7 @@ async fn prepare_stack_for_render( let stack_state = StackState::new(platform); let config = DeploymentConfig { + input_values: Default::default(), deployment_name: Some(stack.id().to_string()), stack_settings: stack_settings.clone(), management_config: None, diff --git a/crates/alien-cloudformation/src/emitter.rs b/crates/alien-cloudformation/src/emitter.rs index c2d842a5c..b0c74fc12 100644 --- a/crates/alien-cloudformation/src/emitter.rs +++ b/crates/alien-cloudformation/src/emitter.rs @@ -34,6 +34,19 @@ pub trait CfEmitter: Send + Sync { /// into the setup registration payload by the generator. fn emit_import_ref(&self, ctx: &EmitContext<'_>) -> Result; + /// Whether this emitter renders correctly for a resource gated by + /// `.enabled(input)`. + /// + /// Opting in means the emitter leaves the generator free to stamp the gate's + /// `Condition` onto its resources, and folds its own import ref through + /// `Fn::If` so nothing references a resource the condition skipped. The + /// generator refuses to render a gated resource whose emitter has not, so a + /// half-converted emitter fails loudly instead of silently creating the + /// resource the deployer declined. + fn supports_enabled_when(&self) -> bool { + false + } + /// Expression that resolves to this resource's runtime binding payload. /// Import data feeds the manager; binding data feeds user code. fn emit_binding_ref(&self, _ctx: &EmitContext<'_>) -> Result> { diff --git a/crates/alien-cloudformation/src/emitters/aws/remote_stack_management.rs b/crates/alien-cloudformation/src/emitters/aws/remote_stack_management.rs index 9b4eb0e6e..8abd1cc07 100644 --- a/crates/alien-cloudformation/src/emitters/aws/remote_stack_management.rs +++ b/crates/alien-cloudformation/src/emitters/aws/remote_stack_management.rs @@ -341,6 +341,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } diff --git a/crates/alien-cloudformation/src/emitters/enabled.rs b/crates/alien-cloudformation/src/emitters/enabled.rs new file mode 100644 index 000000000..4b821487a --- /dev/null +++ b/crates/alien-cloudformation/src/emitters/enabled.rs @@ -0,0 +1,42 @@ +//! Rendering for a resource whose creation follows a deployer input. +//! +//! `.enabled(input)` in the SDK means the deployer decides whether the resource +//! exists. CloudFormation learns that answer as a parameter at deploy time, not +//! when we render, so the decision has to live in the template: the resource +//! carries a `Condition`, and nothing that outlives it may reference it. +//! +//! Two things follow, and the generator does both: +//! +//! - every resource the emitter returns gets the gate's `Condition` +//! - the resource's registration entry is dropped from the payload entirely +//! +//! Dropping the whole entry is the part that is easy to get wrong. Registration +//! runs the typed importer over every entry it receives, so an entry that is +//! present but null — or present with null fields — fails deserialization +//! instead of being skipped. There is no skip-on-null anywhere in that path. +//! `AWS::NoValue` removes the list element outright, which is the only shape +//! that leaves nothing to deserialize. + +use crate::{generator::stack_input_parameter_name_for_id, template::CfExpression}; + +/// Name of the condition carrying the gate's value. The generator declares it +/// and stamps it onto resources, so both derive it from the input id alone. +pub fn condition_name(input_id: &str) -> String { + format!("{}IsTrue", stack_input_parameter_name_for_id(input_id)) +} + +/// Yields `value` while the gate is on and `when_disabled` while it is off. +/// +/// Pass `CfExpression::no_value()` as `when_disabled` to delete the value rather +/// than blank it: inside a list that removes the element, and inside an object +/// it removes the key. +pub fn when_enabled( + enabled_when: Option<&str>, + value: CfExpression, + when_disabled: CfExpression, +) -> CfExpression { + match enabled_when { + Some(input_id) => CfExpression::if_(condition_name(input_id), value, when_disabled), + None => value, + } +} diff --git a/crates/alien-cloudformation/src/emitters/mod.rs b/crates/alien-cloudformation/src/emitters/mod.rs index 5c040f4c8..f90b29fd1 100644 --- a/crates/alien-cloudformation/src/emitters/mod.rs +++ b/crates/alien-cloudformation/src/emitters/mod.rs @@ -10,3 +10,4 @@ //! top of [`crate::CfRegistry::built_in`]. pub mod aws; +pub mod enabled; diff --git a/crates/alien-cloudformation/src/generator.rs b/crates/alien-cloudformation/src/generator.rs index 77d56ddbf..e9ea77d90 100644 --- a/crates/alien-cloudformation/src/generator.rs +++ b/crates/alien-cloudformation/src/generator.rs @@ -1,4 +1,5 @@ use crate::{ + emitters::enabled, registry::CfRegistry, template::{ CfExpression, CfMapping, CfOutput, CfParameter, CfResource, CfRule, CfRuleAssertion, @@ -63,6 +64,8 @@ const OUTPUT_RESOURCES: &str = "DeploymentResources"; const OUTPUT_RESOURCES_CHUNK_BYTES: usize = 3_500; const STANDARD_OUTPUT_COUNT: usize = 12; const CLOUDFORMATION_MAX_OUTPUTS: usize = 200; +/// `Fn::Sub` variable carrying one registration entry's JSON text. +const ENTRY_JSON_SUB_VARIABLE: &str = "entry"; const MAPPING_REGIONAL_CUSTOM_RESOURCE_SERVICE_TOKENS: &str = "RegionalCustomResourceServiceTokens"; const MAPPING_SERVICE_TOKEN_KEY: &str = "ServiceToken"; const RULE_SUPPORTED_AWS_REGION: &str = "SupportedAwsRegion"; @@ -272,7 +275,7 @@ pub fn generate_cloudformation_template( &stack_inputs, ); - let mut registration_resources = Vec::new(); + let mut registration_resources: Vec = Vec::new(); let mut emitted_resource_ids: IndexMap> = IndexMap::new(); for (resource_id, resource) in stack.resources() { @@ -294,7 +297,54 @@ pub fn generate_cloudformation_template( names: &names, }; - let emitted_resources = emitter.emit_resources_with_registry(&ctx, options.registry)?; + let enabled_when = resource.enabled_when.as_deref(); + let declared_condition = if let Some(input_id) = enabled_when { + if !emitter.supports_enabled_when() { + return Err(AlienError::new(ErrorData::OperationNotSupported { + operation: format!("enabled() on resource type '{resource_type}'"), + reason: format!( + "the CloudFormation emitter for '{resource_type}' does not render \ + conditionally yet, so resource '{resource_id}' would be created \ + regardless of the deployer's answer" + ), + })); + } + Some(declare_enabled_condition( + &mut template, + &stack_inputs, + input_id, + resource_id, + )?) + } else { + None + }; + + let mut emitted_resources = emitter.emit_resources_with_registry(&ctx, options.registry)?; + if let Some(condition) = declared_condition { + for emitted in &mut emitted_resources { + // A resource carries at most one Condition, so an emitter that + // already set its own leaves nowhere to put the deployer's gate. + // Expressing both would need an `Fn::And` over the two, which + // nothing needs yet — until it does, refuse rather than pick one + // and create the resource the deployer declined. + // + // No shipped emitter reaches this: the ones that set conditions + // (aws/network.rs, aws/kubernetes_cluster.rs) return false from + // `supports_enabled_when`, so they fail the check above first. + if let Some(existing) = &emitted.condition { + return Err(AlienError::new(ErrorData::OperationNotSupported { + operation: format!("enabled() on resource type '{resource_type}'"), + reason: format!( + "the CloudFormation emitter for '{resource_type}' already puts \ + condition '{existing}' on '{}', and a resource can carry only one \ + condition", + emitted.logical_id + ), + })); + } + emitted.condition = Some(condition.clone()); + } + } emitted_resource_ids.insert( resource_id.clone(), emitted_resources @@ -308,11 +358,14 @@ pub fn generate_cloudformation_template( } let registration_data = emitter.emit_import_ref(&ctx)?; - registration_resources.push(CfExpression::object([ - ("id", CfExpression::from(resource_id.as_str())), - ("type", CfExpression::from(resource_type.as_ref())), - ("importData", registration_data), - ])); + registration_resources.push(RegistrationEntry { + enabled_when: enabled_when.map(str::to_string), + entry: CfExpression::object([ + ("id", CfExpression::from(resource_id.as_str())), + ("type", CfExpression::from(resource_type.as_ref())), + ("importData", registration_data), + ]), + }); } let kubernetes_namespace = if options.target.is_kubernetes() { @@ -329,8 +382,6 @@ pub fn generate_cloudformation_template( kubernetes_namespace.clone(), supports_custom_domain, ); - let resources = CfExpression::list(registration_resources); - apply_resource_dependencies(stack, &emitted_resource_ids, &mut template); if let Some(service_token) = options.registration.service_token(&mut template)? { @@ -340,7 +391,11 @@ pub fn generate_cloudformation_template( management_config.clone(), stack_settings.clone(), &options, - resources.clone(), + CfExpression::list( + registration_resources + .iter() + .map(RegistrationEntry::custom_resource_element), + ), stack_input_values_expression(&stack_inputs), options.registration.callback_url(), ); @@ -352,7 +407,7 @@ pub fn generate_cloudformation_template( management_config, stack_settings, &options, - resources, + ®istration_resources, )?; } @@ -389,7 +444,13 @@ fn stack_inputs_for_cloudformation( } fn stack_input_parameter_name(input: &StackInputDefinition) -> String { - format!("Input{}", sanitize_logical_id(&input.id)) + stack_input_parameter_name_for_id(&input.id) +} + +/// Parameter name for a stack input id. Shared with the gating helpers, which +/// only know the id. +pub(crate) fn stack_input_parameter_name_for_id(input_id: &str) -> String { + format!("Input{}", sanitize_logical_id(input_id)) } fn add_stack_input_parameters(template: &mut CfTemplate, inputs: &[StackInputDefinition]) { @@ -686,6 +747,51 @@ fn sanitize_logical_id(input: &str) -> String { out } +/// Declares the condition a gated resource renders under, once per gating input. +/// +/// Boolean stack inputs reach CloudFormation as string parameters constrained to +/// `"true"` / `"false"`, so the gate is an equality test against `"true"`. +/// +/// The "input is declared" and "input is boolean" rules below are also enforced +/// by `ResourceEnabledValidCheck`, repeated here on purpose: a caller that +/// renders without running preflights must not get a template that silently +/// drops the gate. +fn declare_enabled_condition( + template: &mut CfTemplate, + stack_inputs: &[StackInputDefinition], + input_id: &str, + resource_id: &str, +) -> Result { + let condition_name = enabled::condition_name(input_id); + if template.conditions.contains_key(&condition_name) { + // A sibling resource on the same gate already validated the input + // and declared the condition. + return Ok(condition_name); + } + + let input = alien_core::find_boolean_gate_input(stack_inputs, input_id).map_err(|issue| { + AlienError::new(ErrorData::OperationNotSupported { + operation: format!("enabled('{input_id}')"), + reason: match issue { + alien_core::GateInputIssue::Undeclared => format!( + "resource '{resource_id}' is gated on stack input '{input_id}', which this \ + template never asks the deployer for" + ), + alien_core::GateInputIssue::NotBoolean(kind) => format!( + "resource '{resource_id}' is gated on stack input '{input_id}', which is a \ + {kind:?} input rather than a boolean" + ), + }, + }) + })?; + + template.conditions.insert( + condition_name.clone(), + equals_ref(&stack_input_parameter_name(input), "true"), + ); + Ok(condition_name) +} + fn insert_resource(template: &mut CfTemplate, resource: CfResource) -> Result<()> { if template.resources.contains_key(&resource.logical_id) { return Err(AlienError::new(ErrorData::GenericError { @@ -1563,7 +1669,7 @@ fn add_outputs( management_config: CfExpression, stack_settings: CfExpression, options: &CloudFormationOptions<'_>, - resources: CfExpression, + resources: &[RegistrationEntry], ) -> Result<()> { template.outputs.insert( OUTPUT_SOURCE_KIND.to_string(), @@ -1658,8 +1764,90 @@ fn json_output_value(value: CfExpression) -> CfExpression { } } -fn add_resource_outputs(template: &mut CfTemplate, resources: CfExpression) -> Result<()> { - let chunks = chunk_resource_expression(resources)?; +/// One resource's registration entry, kept beside the gate that decides whether +/// the deployer wanted it. +/// +/// The two registration paths need different forms of the same two pieces, so +/// the gate stays separate until each one renders it: the custom resource gates +/// the entry object, the Outputs fallback gates the entry's JSON text. +struct RegistrationEntry { + /// Stack input id the deployer answers, or `None` when the resource is + /// created unconditionally. + enabled_when: Option, + entry: CfExpression, +} + +impl RegistrationEntry { + /// Gates a rendered value on this entry's input: a declined entry + /// resolves to `AWS::NoValue`, which removes the element from its list. + fn gated(&self, value: CfExpression) -> CfExpression { + enabled::when_enabled(self.enabled_when.as_deref(), value, CfExpression::no_value()) + } + + /// Element for the custom resource's `Resources` property. + fn custom_resource_element(&self) -> CfExpression { + self.gated(self.entry.clone()) + } + + /// The entry's JSON text for the Outputs fallback, gated so a declined entry + /// resolves to `AWS::NoValue`. + /// + /// `Fn::ToJsonString` sits *inside* the gate on purpose. Wrapping the gate + /// instead — `ToJsonString(Fn::If(..))` — serializes a declined entry as the + /// literal `null`, which is the bug this construction exists to avoid. + /// + /// The `Fn::Sub` around it only launders the type. CloudFormation resolves a + /// bare `Fn::ToJsonString` inside `Fn::Join` correctly, but cfn-lint does not + /// infer that it returns a string and fails the template with E6101, and the + /// only way to silence that is a template-wide suppression that would also + /// mask real E6101s. Substitution is a single pass, so JSON containing a + /// literal `${...}` passes through untouched. + fn outputs_element(&self) -> CfExpression { + let json_text = CfExpression::sub_with( + format!("${{{ENTRY_JSON_SUB_VARIABLE}}}"), + [( + ENTRY_JSON_SUB_VARIABLE, + CfExpression::to_json_string(self.entry.clone()), + )], + ); + self.gated(json_text) + } +} + +/// Renders a chunk of entries as the JSON array text a stack output carries. +/// +/// With no gated entry this is `Fn::ToJsonString` over the whole list, which +/// keeps an ungated stack's output unchanged on re-apply. +/// +/// Once any entry is gated that no longer works. `Fn::ToJsonString` does not +/// honour `AWS::NoValue`: a declined entry survives as a literal `null`, and +/// registration runs the typed importer over every element it receives, so the +/// null fails deserialization rather than being skipped. `Fn::Join` does drop +/// `AWS::NoValue` elements — without leaving a stray delimiter, and collapsing +/// to `[]` when every entry is declined — so gated chunks convert each entry to +/// JSON text on its own and join the array together. +fn resources_json(entries: &[RegistrationEntry]) -> CfExpression { + if entries.iter().all(|entry| entry.enabled_when.is_none()) { + return CfExpression::to_json_string(CfExpression::list( + entries.iter().map(|entry| entry.entry.clone()), + )); + } + + CfExpression::join( + "", + CfExpression::list([ + CfExpression::from("["), + CfExpression::join( + ",", + CfExpression::list(entries.iter().map(RegistrationEntry::outputs_element)), + ), + CfExpression::from("]"), + ]), + ) +} + +fn add_resource_outputs(template: &mut CfTemplate, entries: &[RegistrationEntry]) -> Result<()> { + let chunks = chunk_registration_entries(entries)?; if STANDARD_OUTPUT_COUNT + chunks.len() > CLOUDFORMATION_MAX_OUTPUTS { return Err(AlienError::new(ErrorData::OperationNotSupported { operation: "generate_cloudformation_template".to_string(), @@ -1673,9 +1861,10 @@ fn add_resource_outputs(template: &mut CfTemplate, resources: CfExpression) -> R if chunks.len() == 1 { let chunk = chunks.into_iter().next().expect("one chunk"); - let value = match &chunk { - CfExpression::List(items) if items.is_empty() => CfExpression::from("[]"), - _ => CfExpression::to_json_string(chunk), + let value = if chunk.is_empty() { + CfExpression::from("[]") + } else { + resources_json(chunk) }; template.outputs.insert( OUTPUT_RESOURCES.to_string(), @@ -1689,7 +1878,7 @@ fn add_resource_outputs(template: &mut CfTemplate, resources: CfExpression) -> R format!("{OUTPUT_RESOURCES}{index}"), output( "Deployment registration resources JSON chunk. Reassemble chunks in numeric suffix order.", - CfExpression::to_json_string(chunk), + resources_json(chunk), ), ); } @@ -1710,20 +1899,19 @@ fn kubernetes_cluster_namespace(stack: &Stack) -> Option { }) } -fn chunk_resource_expression(resources: CfExpression) -> Result> { - let CfExpression::List(items) = resources else { - return Ok(vec![resources]); - }; - if items.is_empty() { - return Ok(vec![CfExpression::list([])]); +/// Splits entries into contiguous groups that each stay under the per-output +/// byte budget, sized against the JSON text an entry renders to. +fn chunk_registration_entries(entries: &[RegistrationEntry]) -> Result> { + if entries.is_empty() { + return Ok(vec![&[]]); } let mut chunks = Vec::new(); - let mut current = Vec::new(); + let mut start = 0usize; let mut current_len = 2usize; - for item in items { - let item_len = serde_json::to_string(&item) + for (index, entry) in entries.iter().enumerate() { + let item_len = serde_json::to_string(&entry.entry) .map_err(|error| { AlienError::new(ErrorData::JsonSerializationFailed { reason: format!( @@ -1732,22 +1920,21 @@ fn chunk_resource_expression(resources: CfExpression) -> Result OUTPUT_RESOURCES_CHUNK_BYTES { - chunks.push(CfExpression::List(current)); - current = Vec::new(); - current_len = 2; + let is_first_in_chunk = index == start; + let separator_len = usize::from(!is_first_in_chunk); + if !is_first_in_chunk + && current_len + separator_len + item_len > OUTPUT_RESOURCES_CHUNK_BYTES + { + chunks.push(&entries[start..index]); + start = index; + current_len = 2 + item_len; + continue; } - let separator_len = usize::from(!current.is_empty()); current_len += separator_len + item_len; - current.push(item); } - if !current.is_empty() { - chunks.push(CfExpression::List(current)); - } + chunks.push(&entries[start..]); Ok(chunks) } diff --git a/crates/alien-cloudformation/src/template.rs b/crates/alien-cloudformation/src/template.rs index 4a0c083f9..f17e3f549 100644 --- a/crates/alien-cloudformation/src/template.rs +++ b/crates/alien-cloudformation/src/template.rs @@ -201,7 +201,9 @@ impl CfExpression { } /// `Fn::Sub` two-argument form: substitutes named variables whose values - /// are arbitrary expressions (e.g. `Fn::Join` results). + /// are arbitrary expressions (e.g. `Fn::Join` results). Substitution is a + /// single pass, so a `${...}` sequence inside a substituted value is left + /// alone. pub fn sub_with(template: impl Into, variables: I) -> Self where I: IntoIterator, @@ -250,6 +252,13 @@ impl CfExpression { )]) } + pub fn join(delimiter: impl Into, values: CfExpression) -> Self { + Self::object([( + "Fn::Join", + Self::List(vec![Self::String(delimiter.into()), values]), + )]) + } + pub fn to_json_string(value: CfExpression) -> Self { Self::object([("Fn::ToJsonString", value)]) } diff --git a/crates/alien-core/src/compute_planner.rs b/crates/alien-core/src/compute_planner.rs index 17bf1d8a4..673ff5895 100644 --- a/crates/alien-core/src/compute_planner.rs +++ b/crates/alien-core/src/compute_planner.rs @@ -747,6 +747,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, )] .into_iter() @@ -863,6 +864,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -904,6 +906,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -969,6 +972,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ), ( @@ -978,6 +982,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ), ] diff --git a/crates/alien-core/src/deployment/config.rs b/crates/alien-core/src/deployment/config.rs index 2994bac5f..ef831ce00 100644 --- a/crates/alien-core/src/deployment/config.rs +++ b/crates/alien-core/src/deployment/config.rs @@ -32,6 +32,14 @@ pub struct DeploymentConfig { pub management_config: Option, /// Environment variables snapshot pub environment_variables: EnvironmentVariablesSnapshot, + /// Deployer-provided stack input values, keyed by input id. A resource + /// gated with `.enabled(input)` and a Live lifecycle follows these + /// values; a missing key falls back to the input's declared boolean + /// default. Suppliers must not place secret-kind input values here: + /// this map serializes and debug-prints unredacted. + #[serde(default, skip_serializing_if = "HashMap::is_empty")] + #[builder(default)] + pub input_values: HashMap, /// Allow frozen resource changes during updates /// When true, skips the frozen resources compatibility check. /// This requires running with elevated cloud credentials. @@ -180,3 +188,32 @@ pub struct OtlpConfig { #[serde(default, skip_serializing_if = "HashMap::is_empty")] pub resource_attributes: HashMap, } + +#[cfg(test)] +mod input_values_tests { + use super::*; + + /// Older actors serialize configs without the field; it must deserialize + /// to an empty map, and an empty map must not serialize at all. + #[test] + fn input_values_default_to_empty_and_stay_off_the_wire() { + let json = serde_json::json!({ + "stackSettings": serde_json::to_value(crate::StackSettings::default()).unwrap(), + "environmentVariables": { + "variables": [], + "hash": "hash", + "createdAt": "2026-01-01T00:00:00Z", + }, + "externalBindings": {}, + }); + let config: DeploymentConfig = + serde_json::from_value(json).expect("old shape deserializes"); + assert!(config.input_values.is_empty()); + + let round = serde_json::to_value(&config).expect("serializes"); + assert!( + round.get("inputValues").is_none(), + "empty map must not serialize" + ); + } +} diff --git a/crates/alien-core/src/stack.rs b/crates/alien-core/src/stack.rs index 732902981..a097e0e2c 100644 --- a/crates/alien-core/src/stack.rs +++ b/crates/alien-core/src/stack.rs @@ -21,6 +21,14 @@ pub struct ResourceEntry { /// Default: false (prevents sensitive data in synced state). #[serde(default)] pub remote_access: bool, + /// Id of the boolean stack input that decides whether this resource is + /// created at all. `None` means always create it. + /// + /// Set by `.enabled(input)` in the SDK. Setup emitters render the resource + /// conditionally on the matching template variable, so a deployer who says no + /// never gets the resource, its outputs, or anything derived from it. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub enabled_when: Option, } /// A bag of resources, unaware of any cloud. @@ -158,41 +166,64 @@ impl StackBuilder { /// Adds a resource to the stack with its lifecycle state and additional dependencies. /// The total dependencies will be: resource.get_dependencies() + additional_dependencies pub fn add_with_dependencies( - mut self, + self, resource: T, lifecycle: ResourceLifecycle, additional_dependencies: Vec, ) -> Self { - let resource = Resource::new(resource); - self.resources.insert( - resource.id().to_string(), - ResourceEntry { - config: resource, - lifecycle, - dependencies: additional_dependencies, - remote_access: false, - }, - ); - self + let mut entry = Self::entry(resource, lifecycle); + entry.dependencies = additional_dependencies; + self.insert(entry) + } + + /// Adds a resource whose creation follows a boolean stack input. + /// The deployer's answer decides whether it is provisioned at all. + /// + /// Stacks are authored through the TypeScript SDK's `.enabled(input)`, which + /// sets the field on the resource; this is the Rust-side seam the generator + /// and preflight tests build gated stacks with. + #[doc(hidden)] + pub fn add_enabled_when( + self, + resource: T, + lifecycle: ResourceLifecycle, + input_id: impl Into, + ) -> Self { + let mut entry = Self::entry(resource, lifecycle); + entry.enabled_when = Some(input_id.into()); + self.insert(entry) } /// Adds a resource with remote access enabled. /// When remote_access is true, binding params are synced to StackState for external access. pub fn add_with_remote_access( - mut self, + self, resource: T, lifecycle: ResourceLifecycle, ) -> Self { - let resource = Resource::new(resource); - self.resources.insert( - resource.id().to_string(), - ResourceEntry { - config: resource, - lifecycle, - dependencies: vec![], - remote_access: true, - }, - ); + let mut entry = Self::entry(resource, lifecycle); + entry.remote_access = true; + self.insert(entry) + } + + /// The only place a `ResourceEntry` is spelled out. Each public `add_*` + /// varies one field of it, so a new per-entry field costs one edit here + /// instead of one per method. + fn entry( + resource: T, + lifecycle: ResourceLifecycle, + ) -> ResourceEntry { + ResourceEntry { + config: Resource::new(resource), + lifecycle, + dependencies: Vec::new(), + remote_access: false, + enabled_when: None, + } + } + + fn insert(mut self, entry: ResourceEntry) -> Self { + self.resources.insert(entry.config.id().to_string(), entry); self } diff --git a/crates/alien-core/src/stack_input.rs b/crates/alien-core/src/stack_input.rs index b3fc916d9..cbfd68e64 100644 --- a/crates/alien-core/src/stack_input.rs +++ b/crates/alien-core/src/stack_input.rs @@ -142,3 +142,60 @@ pub struct StackInputDefinition { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub env: Vec, } + +impl StackInputDefinition { + /// A deployer-provided boolean input, the shape `.enabled(input)` gates + /// on. With a default the input is optional; without one it is required, + /// since an unanswered gate would leave the resource's existence + /// undecided. This is the Rust-side seam gated-stack tests build inputs + /// with. + #[doc(hidden)] + pub fn deployer_boolean( + id: &str, + label: &str, + description: &str, + default: Option, + ) -> Self { + Self { + id: id.to_string(), + kind: StackInputKind::Boolean, + provided_by: vec![StackInputProvider::Deployer], + required: default.is_none(), + label: label.to_string(), + description: description.to_string(), + placeholder: None, + default: default.map(StackInputDefaultValue::Boolean), + platforms: None, + validation: None, + env: Vec::new(), + } + } +} + +/// Finds the boolean deployer input a gate references, for render-time +/// re-validation. The compile-time preflight enforces the same two rules; +/// generators repeat them so a caller that renders without preflights cannot +/// ship a template whose gate variable is undeclared or non-boolean. +pub fn find_boolean_gate_input<'a>( + inputs: &'a [StackInputDefinition], + input_id: &str, +) -> Result<&'a StackInputDefinition, GateInputIssue> { + let input = inputs + .iter() + .find(|input| input.id == input_id) + .ok_or(GateInputIssue::Undeclared)?; + if input.kind != StackInputKind::Boolean { + return Err(GateInputIssue::NotBoolean(input.kind.clone())); + } + Ok(input) +} + +/// Why a gate input failed render-time validation; the caller owns the +/// backend-specific error message. +#[derive(Debug, Clone, PartialEq, Eq)] +pub enum GateInputIssue { + /// The stack declares no input with the gate's id. + Undeclared, + /// The input exists but is not a boolean. + NotBoolean(StackInputKind), +} diff --git a/crates/alien-deploy-cli/src/commands/register.rs b/crates/alien-deploy-cli/src/commands/register.rs index 6a442218f..653030555 100644 --- a/crates/alien-deploy-cli/src/commands/register.rs +++ b/crates/alien-deploy-cli/src/commands/register.rs @@ -452,4 +452,55 @@ mod tests { assert_eq!(request.base_platform, Some(Platform::Aws)); assert_eq!(request.setup_target, "eks"); } + + /// The exact `DeploymentResources` shape read back from a live stack that was + /// deployed with a gated `Kv` declined beside an ungated `Queue`. Captured + /// from `describe-stacks` rather than written by hand, because this value only + /// exists after CloudFormation resolves the conditions; the account id and + /// stack name were normalized after capture. + const DECLINED_RESOURCE_PAYLOAD: &str = r#"[{"id":"jobs","type":"queue","importData":{"queueName":"example-gate-Jobs-Xy2Abc3dEfGh","queueUrl":"https://sqs.us-east-1.amazonaws.com/123456789012/example-gate-Jobs-Xy2Abc3dEfGh","queueArn":"arn:aws:sqs:us-east-1:123456789012:example-gate-Jobs-Xy2Abc3dEfGh"}}]"#; + + fn outputs_with_resources(payload: &str) -> CfnOutputs { + CfnOutputs { + resources_chunks: vec![ + parse_json_output("DeploymentResources", payload).expect("payload is JSON"), + ], + ..base_outputs() + } + } + + #[test] + fn a_declined_resource_is_absent_from_the_import_request() { + let request = build_import_request( + &outputs_with_resources(DECLINED_RESOURCE_PAYLOAD), + "dg_token", + "app", + "stack", + ) + .expect("a payload with a declined resource omitted should import"); + + assert_eq!(request.resources.len(), 1); + assert_eq!(request.resources[0].id, "jobs"); + assert_eq!(request.resources[0].resource_type, ResourceType::from("queue")); + } + + /// The reason the payload has to be correct at the source: there is no + /// skip-on-null anywhere in this path, so a declined resource left behind as + /// a null fails the whole import. Making this pass by tolerating nulls would + /// hide the next producer that emits one. + #[test] + fn a_null_entry_fails_the_import_rather_than_being_skipped() { + let error = build_import_request( + &outputs_with_resources(r#"[null,{"id":"jobs","type":"queue","importData":{}}]"#), + "dg_token", + "app", + "stack", + ) + .expect_err("a null entry must not be silently dropped"); + + assert!( + format!("{error:?}").contains("deserialize ImportedResource"), + "expected the typed importer to reject the null: {error:?}" + ); + } } diff --git a/crates/alien-deployment/src/helpers.rs b/crates/alien-deployment/src/helpers.rs index 30f86de5d..7f6b82398 100644 --- a/crates/alien-deployment/src/helpers.rs +++ b/crates/alien-deployment/src/helpers.rs @@ -1027,6 +1027,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1380,6 +1381,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1396,6 +1398,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-deployment/src/lib.rs b/crates/alien-deployment/src/lib.rs index 9d05f88e6..d9dd53971 100644 --- a/crates/alien-deployment/src/lib.rs +++ b/crates/alien-deployment/src/lib.rs @@ -12,6 +12,7 @@ pub mod loop_contract; pub mod manager_api_transport; mod observe; mod pending; +pub use pending::strip_declined_resources; mod provisioning; pub mod runner; mod running; diff --git a/crates/alien-deployment/src/pending.rs b/crates/alien-deployment/src/pending.rs index cae4538eb..c663923a2 100644 --- a/crates/alien-deployment/src/pending.rs +++ b/crates/alien-deployment/src/pending.rs @@ -56,6 +56,19 @@ pub async fn handle_pending( info!("Deployment-time preflight checks completed successfully"); + // Step 3.5: Drop gated setup resources the import did not deliver. + // + // A gated resource renders behind its input in the setup template, so for + // a deployment whose frozen resources arrived through a setup import, its + // absence from the imported state IS the deployer's answer. Leaving the + // entry in the prepared stack would make InitialSetup read it as + // missing-and-pending and create the very resource the deployer declined. + // A non-empty state at Pending can only come from a setup import: Pending + // runs once, before this runner has created anything, and a direct deploy + // enters it with an empty state. + let mutated_stack = + strip_declined_resources(mutated_stack, &stack_state, &config.input_values)?; + // Step 4: Store prepared stack and inject environment variables let mut runtime_metadata = alien_core::RuntimeMetadata::default(); runtime_metadata.prepared_stack = Some(mutated_stack.clone()); @@ -96,6 +109,92 @@ pub async fn handle_pending( }) } +/// Remove gated resources the deployer declined. +/// +/// Two rules, one per lifecycle family: +/// - a gated setup-created resource is declined when a setup import seeded +/// the state and the resource is absent from it — the template rendered it +/// behind the input, so absence IS the answer; +/// - a gated live resource is declined when its input resolves false: the +/// provided value when present, else the input's declared boolean default. +/// Dropping it from the desired stack is what deprovisions it — the +/// executor deletes state resources absent from the desired stack, so a +/// toggle-off removes the resource AND its data by design. +/// +/// An ungated resource missing from an import stays, so real drift still +/// surfaces as a failure; an unresolvable live gate is an error, never a +/// silent keep-or-drop. +pub fn strip_declined_resources( + mut stack: Stack, + stack_state: &StackState, + input_values: &std::collections::HashMap, +) -> Result { + let mut declined: Vec = Vec::new(); + for (resource_id, entry) in stack.resources() { + let Some(input_id) = entry.enabled_when.as_deref() else { + continue; + }; + let setup_created = alien_core::ownership_policy_for_resource_type( + entry.config.resource_type().as_ref(), + ) + .should_emit_in_setup(entry.lifecycle); + + let is_declined = if setup_created { + !stack_state.resources.is_empty() + && !stack_state.resources.contains_key(resource_id.as_str()) + } else { + !gate_resolves_true(&stack.inputs, input_id, input_values, resource_id)? + }; + if is_declined { + declined.push(resource_id.clone()); + } + } + + for resource_id in &declined { + info!( + resource_id = %resource_id, + "The deployer declined this gated resource; it leaves the desired stack" + ); + stack.resources.shift_remove(resource_id); + } + + Ok(stack) +} + +/// The deployer's answer for a live gate: the provided value, else the +/// input's declared boolean default. +fn gate_resolves_true( + inputs: &[alien_core::StackInputDefinition], + input_id: &str, + input_values: &std::collections::HashMap, + resource_id: &str, +) -> Result { + if let Some(value) = input_values.get(input_id) { + return value.as_bool().ok_or_else(|| { + AlienError::new(ErrorData::MissingConfiguration { + message: format!( + "Input '{input_id}' enables resource '{resource_id}' but its value is not \ + a boolean: {value}" + ), + }) + }); + } + + match inputs + .iter() + .find(|input| input.id == input_id) + .and_then(|input| input.default.as_ref()) + { + Some(alien_core::StackInputDefaultValue::Boolean(answer)) => Ok(*answer), + _ => Err(AlienError::new(ErrorData::MissingConfiguration { + message: format!( + "Input '{input_id}' enables resource '{resource_id}' but no value was provided \ + and the input declares no boolean default" + ), + })), + } +} + fn should_collect_environment_info(platform: Platform) -> bool { !matches!(platform, Platform::Machines) } @@ -149,7 +248,183 @@ fn environment_collection_context( #[cfg(test)] mod tests { use super::*; - use alien_core::KubernetesClientConfig; + use alien_core::{ + Kv, KubernetesClientConfig, Resource, ResourceLifecycle, ResourceStatus, ServiceAccount, + StackInputDefinition, StackResourceState, + }; + + fn imported_state_with(resource_id: &str, resource: Resource) -> StackState { + let mut entry = StackResourceState::new_pending( + resource.resource_type().as_ref().to_string(), + resource, + Some(ResourceLifecycle::Frozen), + Vec::new(), + ); + entry.status = ResourceStatus::Running; + let mut state = StackState::new(Platform::Aws); + state.resources.insert(resource_id.to_string(), entry); + state + } + + fn gated_stack() -> Stack { + Stack::new("gated-stack".to_string()) + .add( + ServiceAccount::new("execution-sa".to_string()).build(), + ResourceLifecycle::Frozen, + ) + .add_enabled_when( + Kv::new("analytics".to_string()).build(), + ResourceLifecycle::Frozen, + "analyticsEnabled", + ) + .build() + } + + fn live_gated_stack(default: Option) -> Stack { + let input = StackInputDefinition::deployer_boolean( + "cacheEnabled", + "Enable the cache", + "Whether to run the cache store.", + default, + ); + Stack::new("gated-stack".to_string()) + .inputs(vec![input]) + .add_enabled_when( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + "cacheEnabled", + ) + .build() + } + + /// The import delivered the service account but not the gated store: the + /// deployer declined it, so the runner must not try to create it. + #[test] + fn a_gated_resource_absent_from_an_import_is_stripped() { + let state = imported_state_with( + "execution-sa", + Resource::new(ServiceAccount::new("execution-sa".to_string()).build()), + ); + + let stripped = strip_declined_resources(gated_stack(), &state, &Default::default()) + .expect("frozen rules never error"); + + assert!(!stripped.resources.contains_key("analytics")); + assert!(stripped.resources.contains_key("execution-sa")); + } + + /// An empty state means this runner creates the frozen resources itself + /// (a direct deploy), so absence carries no answer and nothing is dropped. + #[test] + fn nothing_is_stripped_before_anything_was_imported() { + let stripped = strip_declined_resources( + gated_stack(), + &StackState::new(Platform::Aws), + &Default::default(), + ) + .expect("frozen rules never error"); + + assert!(stripped.resources.contains_key("analytics")); + } + + /// A gated resource the import delivered was accepted; it stays. + #[test] + fn an_imported_gated_resource_stays() { + let state = imported_state_with( + "analytics", + Resource::new(Kv::new("analytics".to_string()).build()), + ); + + let stripped = strip_declined_resources(gated_stack(), &state, &Default::default()) + .expect("frozen rules never error"); + + assert!(stripped.resources.contains_key("analytics")); + } + + /// An ungated resource missing from an import is drift, not an answer; + /// leaving it in keeps the failure visible. + #[test] + fn an_ungated_missing_resource_is_not_papered_over() { + let state = imported_state_with( + "analytics", + Resource::new(Kv::new("analytics".to_string()).build()), + ); + + let stripped = strip_declined_resources(gated_stack(), &state, &Default::default()) + .expect("frozen rules never error"); + + assert!(stripped.resources.contains_key("execution-sa")); + } + + /// The deployer said no: the live resource leaves the desired stack, and + /// because deprovisioning is state-vs-desired reconciliation, it leaves + /// whether or not the resource already exists. + #[test] + fn a_live_gate_answered_false_drops_the_resource() { + let stripped = strip_declined_resources( + live_gated_stack(Some(true)), + &StackState::new(Platform::Aws), + &std::collections::HashMap::from([("cacheEnabled".to_string(), serde_json::json!(false))]), + ) + .expect("resolvable gate"); + assert!(!stripped.resources.contains_key("cache")); + } + + #[test] + fn a_live_gate_answered_true_keeps_the_resource() { + let stripped = strip_declined_resources( + live_gated_stack(Some(false)), + &StackState::new(Platform::Aws), + &std::collections::HashMap::from([("cacheEnabled".to_string(), serde_json::json!(true))]), + ) + .expect("resolvable gate"); + assert!(stripped.resources.contains_key("cache")); + } + + /// No answer given (a direct deploy): the declared default decides. + #[test] + fn an_unanswered_live_gate_follows_its_default() { + let kept = strip_declined_resources( + live_gated_stack(Some(true)), + &StackState::new(Platform::Aws), + &Default::default(), + ) + .expect("default resolves"); + assert!(kept.resources.contains_key("cache")); + + let dropped = strip_declined_resources( + live_gated_stack(Some(false)), + &StackState::new(Platform::Aws), + &Default::default(), + ) + .expect("default resolves"); + assert!(!dropped.resources.contains_key("cache")); + } + + /// An unresolvable gate is a fault, never a silent keep-or-drop. + #[test] + fn an_unresolvable_live_gate_fails_fast() { + let error = strip_declined_resources( + live_gated_stack(None), + &StackState::new(Platform::Aws), + &Default::default(), + ) + .expect_err("no value and no default cannot resolve"); + assert!(error.message.contains("cacheEnabled"), "{}", error.message); + } + + /// Input values are coerced to their declared kinds before they reach + /// this layer; a non-boolean here is corrupt input and must fail loudly. + #[test] + fn a_non_boolean_gate_value_fails_fast() { + let error = strip_declined_resources( + live_gated_stack(Some(true)), + &StackState::new(Platform::Aws), + &std::collections::HashMap::from([("cacheEnabled".to_string(), serde_json::json!("false"))]), + ) + .expect_err("string values are not answers"); + assert!(error.message.contains("boolean"), "{}", error.message); + } #[test] fn kubernetes_base_platform_collects_base_environment() { diff --git a/crates/alien-deployment/src/runner.rs b/crates/alien-deployment/src/runner.rs index 7c7f9dcf4..96cba6d77 100644 --- a/crates/alien-deployment/src/runner.rs +++ b/crates/alien-deployment/src/runner.rs @@ -531,6 +531,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -571,6 +572,7 @@ mod tests { fn test_config() -> DeploymentConfig { DeploymentConfig { + input_values: Default::default(), deployment_name: Some("test deployment".to_string()), stack_settings: StackSettings::default(), management_config: None, diff --git a/crates/alien-deployment/src/updating.rs b/crates/alien-deployment/src/updating.rs index 3303de109..44351b8b0 100644 --- a/crates/alien-deployment/src/updating.rs +++ b/crates/alien-deployment/src/updating.rs @@ -68,6 +68,21 @@ pub async fn handle_update_pending( }) })?; + // Drop gated resources the deployer declined, BEFORE the preflights: the + // frozen-compatibility check compares against the previous prepared + // stack, which was stripped the same way, and an unstripped new stack + // would read as "frozen resource added" and refuse the update — or + // worse, resurrect the resource the deployer declined. For a live gate + // this strip is also what applies an input edit: the resource enters or + // leaves the desired stack here, and the executor's create/delete + // planning provisions or deprovisions it. Dependents share their + // dependency's gate, so the strip stays closed. + let target_stack = crate::pending::strip_declined_resources( + target_stack, + &stack_state, + &config.input_values, + )?; + let runner = alien_preflights::runner::PreflightRunner::new(); // For compatibility checks, use the prepared (mutated) stack from the previous deployment @@ -232,7 +247,7 @@ pub async fn handle_updating( })?; // Execute one step - let step_result = + let mut step_result = executor .step(stack_state) .await @@ -240,6 +255,12 @@ pub async fn handle_updating( message: "Failed to execute update step".to_string(), })?; + prune_deprovisioned_resources( + &mut step_result.next_state, + &target_stack, + current.target_release.as_ref().map(|release| &release.stack), + ); + // Compute the stack status from the resulting state let stack_status = compute_update_status(&step_result.next_state, &target_stack)?; @@ -410,3 +431,152 @@ pub async fn handle_update_failed( observed_inventory_batches: vec![], }) } + +/// Drop the terminally deleted entries of gate-declined resources. +/// +/// A declined resource is still declared by the release, so a later +/// re-enable must start from a clean slate rather than a `Deleted` +/// tombstone the executor would have to reconcile. Resources REMOVED from +/// the release keep their tombstone — it is the executor's deletion record, +/// and the update-status computation already ignores it. Destroy flows keep +/// their `Deleted` entries too — they never pass through the update handler. +fn prune_deprovisioned_resources( + state: &mut StackState, + target_stack: &Stack, + release_stack: Option<&Stack>, +) { + state.resources.retain(|resource_id, resource_state| { + resource_state.status != ResourceStatus::Deleted + || target_stack.resources.contains_key(resource_id) + || !release_stack + .and_then(|stack| stack.resources.get(resource_id)) + .is_some_and(|entry| entry.enabled_when.is_some()) + }); +} + +#[cfg(test)] +mod tests { + use super::*; + use alien_core::{Kv, Resource, ResourceLifecycle, StackResourceState, Worker, WorkerCode}; + + fn state_entry(resource: Resource, status: ResourceStatus) -> StackResourceState { + let mut entry = StackResourceState::new_pending( + resource.resource_type().as_ref().to_string(), + resource, + Some(ResourceLifecycle::Live), + Vec::new(), + ); + entry.status = status; + entry + } + + /// Build a release stack where `cache` is declared behind a gate. + fn release_stack_with_gated_cache(agent: &alien_core::Worker) -> Stack { + let mut stack = Stack::new("s".to_string()) + .add(agent.clone(), ResourceLifecycle::Live) + .add( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + ) + .build(); + stack + .resources + .get_mut("cache") + .expect("cache entry exists") + .enabled_when = Some("cacheEnabled".to_string()); + stack + } + + /// The declined gated store leaves the state so the stack computes back + /// to Running; the survivors stay untouched. + #[test] + fn a_deprovisioned_gated_resource_leaves_the_state() { + let agent = Worker::new("agent".to_string()) + .permissions("execution".to_string()) + .code(WorkerCode::Image { + image: "example.com/agent:latest".to_string(), + }) + .build(); + let target_stack = Stack::new("s".to_string()) + .add(agent.clone(), ResourceLifecycle::Live) + .build(); + let release_stack = release_stack_with_gated_cache(&agent); + + let mut state = StackState::new(Platform::Aws); + state.resources.insert( + "agent".to_string(), + state_entry(Resource::new(agent), ResourceStatus::Running), + ); + state.resources.insert( + "cache".to_string(), + state_entry( + Resource::new(Kv::new("cache".to_string()).build()), + ResourceStatus::Deleted, + ), + ); + + prune_deprovisioned_resources(&mut state, &target_stack, Some(&release_stack)); + + assert!(!state.resources.contains_key("cache")); + assert!(state.resources.contains_key("agent")); + assert_eq!( + state.compute_stack_status().expect("status computes"), + StackStatus::Running + ); + } + + /// A Deleted entry the desired stack still wants is the executor's to + /// recreate, not ours to forget. + #[test] + fn a_deleted_but_still_desired_resource_stays() { + let cache = Kv::new("cache".to_string()).build(); + let target_stack = Stack::new("s".to_string()) + .add(cache.clone(), ResourceLifecycle::Live) + .build(); + let release_stack = target_stack.clone(); + + let mut state = StackState::new(Platform::Aws); + state.resources.insert( + "cache".to_string(), + state_entry(Resource::new(cache), ResourceStatus::Deleted), + ); + + prune_deprovisioned_resources(&mut state, &target_stack, Some(&release_stack)); + + assert!(state.resources.contains_key("cache")); + } + + /// A resource removed from the release entirely keeps its Deleted entry: + /// the tombstone is the executor's deletion record, and only gate + /// declines are ours to clean up. + #[test] + fn a_removed_ungated_resource_keeps_its_tombstone() { + let agent = Worker::new("agent".to_string()) + .permissions("execution".to_string()) + .code(WorkerCode::Image { + image: "example.com/agent:latest".to_string(), + }) + .build(); + let target_stack = Stack::new("s".to_string()) + .add(agent.clone(), ResourceLifecycle::Live) + .build(); + let release_stack = target_stack.clone(); + + let mut state = StackState::new(Platform::Aws); + state.resources.insert( + "agent".to_string(), + state_entry(Resource::new(agent), ResourceStatus::Running), + ); + state.resources.insert( + "cache".to_string(), + state_entry( + Resource::new(Kv::new("cache".to_string()).build()), + ResourceStatus::Deleted, + ), + ); + + prune_deprovisioned_resources(&mut state, &target_stack, Some(&release_stack)); + + assert!(state.resources.contains_key("cache")); + } +} diff --git a/crates/alien-deployment/tests/test_platform.rs b/crates/alien-deployment/tests/test_platform.rs index 896a3d8b0..c11ea3b65 100644 --- a/crates/alien-deployment/tests/test_platform.rs +++ b/crates/alien-deployment/tests/test_platform.rs @@ -132,6 +132,7 @@ fn create_test_stack(stack_id: &str, function_id: &str) -> Stack { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -168,6 +169,7 @@ fn create_test_stack_with_storage(stack_id: &str, storage_id: &str, function_id: lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -177,6 +179,7 @@ fn create_test_stack_with_storage(stack_id: &str, storage_id: &str, function_id: lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -230,6 +233,7 @@ fn expected_secrets_sync_hash(snapshot_hash: &str) -> String { /// Create a deployment config fixture fn create_test_config(env_vars_hash: &str, include_secret: bool) -> DeploymentConfig { DeploymentConfig { + input_values: Default::default(), deployment_name: Some("test deployment".to_string()), stack_settings: StackSettings::default(), management_config: None, @@ -628,6 +632,7 @@ async fn test_running_transitions_to_refresh_failed_on_health_check_failure() { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -794,6 +799,7 @@ async fn update_completes_after_removed_resource_is_deleted() { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -888,6 +894,7 @@ async fn test_update_failed_retry_gate_returns_to_update_pending() { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1177,6 +1184,7 @@ fn create_two_function_stack_one_fails(stack_id: &str) -> Stack { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -1186,6 +1194,7 @@ fn create_two_function_stack_one_fails(stack_id: &str) -> Stack { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1237,6 +1246,7 @@ fn create_two_function_stack_dependent_one_fails(stack_id: &str) -> Stack { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -1249,6 +1259,7 @@ fn create_two_function_stack_dependent_one_fails(stack_id: &str) -> Stack { "failing-fn".to_string(), )], remote_access: false, + enabled_when: None, }, ); @@ -1439,3 +1450,150 @@ async fn test_deleted_is_noop() { assert_eq!(result.state.status, DeploymentStatus::Deleted); assert!(!result.update_heartbeat, "should not heartbeat on Deleted"); } + +/// F) Live gating flow tests + +/// A deployer-provided boolean gate input with a declared default of true. +fn boolean_gate_input(id: &str, label: &str, description: &str) -> alien_core::StackInputDefinition { + alien_core::StackInputDefinition::deployer_boolean(id, label, description, Some(true)) +} + +/// A stack whose live storage is gated on a deployer boolean with a declared +/// default of true. +fn create_live_gated_stack(stack_id: &str, store_id: &str, function_id: &str) -> Stack { + let mut stack = create_test_stack(stack_id, function_id); + stack.resources.insert( + store_id.to_string(), + ResourceEntry { + config: alien_core::Resource::new(Storage::new(store_id.to_string()).build()), + lifecycle: ResourceLifecycle::Live, + dependencies: Vec::new(), + remote_access: false, + enabled_when: Some("storeEnabled".to_string()), + }, + ); + stack.inputs = vec![boolean_gate_input( + "storeEnabled", + "Enable the store", + "Whether to run the store.", + )]; + stack +} + +fn config_with_store_enabled(enabled: bool) -> DeploymentConfig { + let mut config = create_test_config("hash_v1", false); + config.input_values = + HashMap::from([("storeEnabled".to_string(), serde_json::json!(enabled))]); + config +} + +fn release_of(release_id: &str, stack: Stack) -> ReleaseInfo { + ReleaseInfo { + release_id: Some(release_id.to_string()), + version: Some("1.0.0".to_string()), + description: None, + stack, + } +} + +/// The full live-gate cycle through the real state machine: default creates +/// the store, a false answer on an update deprovisions it AND lets the +/// deployment converge back to Running (the Deleted entry is pruned), and a +/// true answer on a later update recreates it. +#[tokio::test] +async fn live_gate_flip_deprovisions_and_reprovisions_across_updates() { + let _temp_dir = TempDir::new().expect("Failed to create temp dir"); + + let stack = create_live_gated_stack("gated-stack", "cache", "test-function"); + let config = create_test_config("hash_v1", false); + let mut state = create_initial_state(stack.clone()); + + // No answer given: the declared default (true) creates the store. + state = run_to_completion(state, config.clone()).await; + assert_eq!(state.status, DeploymentStatus::Running); + assert!(state + .stack_state + .as_ref() + .unwrap() + .resources + .contains_key("cache")); + + // The deployer answers false on an update: the store is deprovisioned + // and its Deleted entry leaves the state, so the stack computes Running. + start_update(&mut state, release_of("rel_v2", stack.clone())); + state = run_to_completion(state, config_with_store_enabled(false)).await; + assert_eq!(state.status, DeploymentStatus::Running); + assert!(!state + .stack_state + .as_ref() + .unwrap() + .resources + .contains_key("cache")); + + // Back to true on the next update: the store is recreated. + start_update(&mut state, release_of("rel_v3", stack)); + state = run_to_completion(state, config_with_store_enabled(true)).await; + assert_eq!(state.status, DeploymentStatus::Running); + let store = state + .stack_state + .as_ref() + .unwrap() + .resources + .get("cache") + .expect("an accepted gate must recreate the store"); + assert_eq!(store.status, alien_core::ResourceStatus::Running); +} + +/// A setup import that omitted a gated frozen resource: the runner must not +/// create the resource the deployer declined, while the delivered sibling +/// and the live function still deploy. +#[tokio::test] +async fn a_declined_gated_import_is_not_created_by_the_runner() { + let _temp_dir = TempDir::new().expect("Failed to create temp dir"); + + let mut stack = create_test_stack_with_storage("test-stack", "assets", "test-function"); + stack.resources.insert( + "analytics".to_string(), + ResourceEntry { + config: alien_core::Resource::new(Storage::new("analytics".to_string()).build()), + lifecycle: ResourceLifecycle::Frozen, + dependencies: Vec::new(), + remote_access: false, + enabled_when: Some("analyticsEnabled".to_string()), + }, + ); + stack.inputs = vec![boolean_gate_input( + "analyticsEnabled", + "Enable analytics", + "Whether to create the analytics store.", + )]; + + // The import delivered only the ungated frozen storage; the gated one is + // absent, which IS the deployer's answer. + let mut imported_assets = alien_core::StackResourceState::new_pending( + "storage".to_string(), + alien_core::Resource::new(Storage::new("assets".to_string()).build()), + Some(ResourceLifecycle::Frozen), + Vec::new(), + ); + imported_assets.status = alien_core::ResourceStatus::Running; + let mut imported_state = StackState::new(Platform::Test); + imported_state + .resources + .insert("assets".to_string(), imported_assets); + + let config = create_test_config("hash_v1", false); + let mut state = create_initial_state(stack); + state.stack_state = Some(imported_state); + + state = run_to_completion(state, config).await; + assert_eq!(state.status, DeploymentStatus::Running); + + let resources = &state.stack_state.as_ref().unwrap().resources; + assert!( + !resources.contains_key("analytics"), + "the runner must not create the gated resource the import omitted" + ); + assert!(resources.contains_key("assets")); + assert!(resources.contains_key("test-function")); +} diff --git a/crates/alien-infra/src/core/controller_test.rs b/crates/alien-infra/src/core/controller_test.rs index 484535e51..8149c3d59 100644 --- a/crates/alien-infra/src/core/controller_test.rs +++ b/crates/alien-infra/src/core/controller_test.rs @@ -909,6 +909,7 @@ impl SingleControllerExecutorBuilder { lifecycle: ResourceLifecycle::Live, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); @@ -952,6 +953,7 @@ impl SingleControllerExecutorBuilder { .map(|(ref_obj, _, _)| ref_obj.clone()) .collect(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-infra/src/core/executor_tests/helpers.rs b/crates/alien-infra/src/core/executor_tests/helpers.rs index 7f36df155..7ce0ad8be 100644 --- a/crates/alien-infra/src/core/executor_tests/helpers.rs +++ b/crates/alien-infra/src/core/executor_tests/helpers.rs @@ -304,6 +304,7 @@ pub fn build_stack_with_deps( lifecycle, dependencies: deps, remote_access: false, + enabled_when: None, }, ); } diff --git a/crates/alien-infra/src/network/aws_import.rs b/crates/alien-infra/src/network/aws_import.rs index f59bc8a40..b81741cb4 100644 --- a/crates/alien-infra/src/network/aws_import.rs +++ b/crates/alien-infra/src/network/aws_import.rs @@ -116,6 +116,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } diff --git a/crates/alien-infra/tests/importers.rs b/crates/alien-infra/tests/importers.rs index 85df2ca6e..db5b9e64e 100644 --- a/crates/alien-infra/tests/importers.rs +++ b/crates/alien-infra/tests/importers.rs @@ -57,6 +57,7 @@ fn entry(resource: T) -> ResourceEntry { lifecycle: ResourceLifecycle::Live, dependencies: vec![], remote_access: false, + enabled_when: None, } } @@ -66,6 +67,7 @@ fn frozen_entry(resource: T) -> ResourceEntry { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, } } diff --git a/crates/alien-manager/src/loops/deployment.rs b/crates/alien-manager/src/loops/deployment.rs index a31d1baaf..d2657f630 100644 --- a/crates/alien-manager/src/loops/deployment.rs +++ b/crates/alien-manager/src/loops/deployment.rs @@ -590,6 +590,7 @@ impl DeploymentLoop { .expect("stored deployment carries stack_settings"); DeploymentConfig { + input_values: Default::default(), deployment_name: Some(deployment.name.clone()), stack_settings: stack_settings.clone(), management_config, diff --git a/crates/alien-manager/src/routes/stack.rs b/crates/alien-manager/src/routes/stack.rs index e89c9f244..90adf6e1d 100644 --- a/crates/alien-manager/src/routes/stack.rs +++ b/crates/alien-manager/src/routes/stack.rs @@ -184,6 +184,20 @@ pub async fn stack_import( Ok(s) => s, Err(e) => return e.into_response(), }; + // A gated resource renders behind its input in the setup template, so its + // absence from the import IS the deployer's answer. Imported deployments + // enter the runner at InitialSetup with this prepared stack; leaving the + // declined entry in would make the runner create the very resource the + // deployer said no to. A live gated resource follows the request's input + // values here for the same reason. + let prepared_stack = match alien_deployment::strip_declined_resources( + prepared_stack, + &stack_state, + &req.input_values, + ) { + Ok(stack) => stack, + Err(e) => return e.into_response(), + }; let environment_info = infer_import_environment_info(&req); match state .deployment_store @@ -300,6 +314,7 @@ pub async fn stack_import( setup_fingerprint: req.setup_fingerprint.clone(), setup_fingerprint_version: req.setup_fingerprint_version, schedule_reconciliation: should_reconcile, + input_values: req.input_values.clone(), }, ) .await @@ -839,6 +854,7 @@ async fn prepare_import_stack( let stack_state = StackState::new(mutation_platform); let config = DeploymentConfig { + input_values: Default::default(), deployment_name: Some(req.deployment_name.clone()), stack_settings: req.stack_settings.clone(), management_config: req.management_config.clone(), diff --git a/crates/alien-manager/src/routes/sync.rs b/crates/alien-manager/src/routes/sync.rs index b2358d34a..d4d150ef9 100644 --- a/crates/alien-manager/src/routes/sync.rs +++ b/crates/alien-manager/src/routes/sync.rs @@ -949,6 +949,7 @@ mod tests { fn test_deployment_config() -> DeploymentConfig { DeploymentConfig { + input_values: Default::default(), deployment_name: None, stack_settings: StackSettings::default(), management_config: None, diff --git a/crates/alien-manager/src/stores/sqlite/deployment.rs b/crates/alien-manager/src/stores/sqlite/deployment.rs index c32ae5d78..a3ed88054 100644 --- a/crates/alien-manager/src/stores/sqlite/deployment.rs +++ b/crates/alien-manager/src/stores/sqlite/deployment.rs @@ -691,6 +691,10 @@ impl DeploymentStore for SqliteDeploymentStore { setup_fingerprint, setup_fingerprint_version, schedule_reconciliation, + // Carried for gate resolution on re-import; this store has no + // input-values column, so gated live resources resolve to their + // declared defaults on later steps. + input_values: _, } = params; let mut merged_stack_state = stack_state; if let Some(existing) = self.get_deployment(caller, deployment_id).await? { diff --git a/crates/alien-manager/src/traits/deployment_store.rs b/crates/alien-manager/src/traits/deployment_store.rs index 63a228366..414db0b84 100644 --- a/crates/alien-manager/src/traits/deployment_store.rs +++ b/crates/alien-manager/src/traits/deployment_store.rs @@ -184,6 +184,9 @@ pub struct UpdateImportedDeploymentParams { pub setup_fingerprint_version: u32, /// Move the deployment to `update-pending` in the same write as the import data. pub schedule_reconciliation: bool, + /// Deployer stack input values carried by the re-import; they overwrite + /// the stored map — the edit surface for gate flips. + pub input_values: HashMap, } /// A deployment group record. diff --git a/crates/alien-manager/tests/loop_import.rs b/crates/alien-manager/tests/loop_import.rs index f87d3015f..a5ca27507 100644 --- a/crates/alien-manager/tests/loop_import.rs +++ b/crates/alien-manager/tests/loop_import.rs @@ -78,6 +78,7 @@ fn make_imported_state(resource_id: &str, bucket: &str) -> StackState { }; let resource_entry = ResourceEntry { + enabled_when: None, config: resource.clone(), lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), diff --git a/crates/alien-manager/tests/stack_import.rs b/crates/alien-manager/tests/stack_import.rs index 670877b79..a89bf3011 100644 --- a/crates/alien-manager/tests/stack_import.rs +++ b/crates/alien-manager/tests/stack_import.rs @@ -1116,3 +1116,61 @@ async fn invalid_resource_prefix_returns_400() { let (status, json) = post_import(&fixture, Some(&fixture.dg_token), &body).await; assert_eq!(status, StatusCode::BAD_REQUEST, "body = {:#}", json); } + +/// Build a Stack whose second storage is gated on a declared deployer boolean. +fn stack_with_gated_storage(ungated_id: &str, gated_id: &str) -> Stack { + Stack::new("imported".to_string()) + .inputs(vec![alien_core::StackInputDefinition::deployer_boolean( + "extrasEnabled", + "Enable extras", + "Whether to create the extras store.", + Some(true), + )]) + .add( + Storage::new(ungated_id.to_string()).build(), + ResourceLifecycle::Frozen, + ) + .add_enabled_when( + Storage::new(gated_id.to_string()).build(), + ResourceLifecycle::Frozen, + "extrasEnabled", + ) + .build() +} + +/// A setup import that omitted a gated resource: the stored prepared stack +/// must exclude it, or provisioning would create the very resource the +/// deployer declined. +#[tokio::test] +async fn a_declined_gated_resource_is_stripped_from_the_prepared_stack() { + let fixture = make_fixture(Some(stack_with_gated_storage("assets", "extras"))).await; + let body = aws_s3_import_request("acme-prod", "us-east-1", "assets", "acme-imports"); + + let (status, json) = post_import(&fixture, Some(&fixture.dg_token), &body).await; + assert_eq!(status, StatusCode::CREATED, "body = {:#}", json); + let parsed: StackImportResponse = serde_json::from_value(json).unwrap(); + + let persisted = fixture + .deployment_store + .get_deployment( + &alien_manager::auth::Subject::system(), + &parsed.deployment_id, + ) + .await + .unwrap() + .expect("deployment must persist"); + let prepared_stack = persisted + .runtime_metadata + .as_ref() + .expect("runtime_metadata must be persisted") + .prepared_stack + .as_ref() + .expect("prepared_stack must be persisted for imported provisioning"); + + assert!( + !prepared_stack.resources.contains_key("extras"), + "the import omitted the gated store, so the prepared stack must not \ + carry it into provisioning" + ); + assert!(prepared_stack.resources.contains_key("assets")); +} diff --git a/crates/alien-operator/src/loops/deployment.rs b/crates/alien-operator/src/loops/deployment.rs index cea8b2a05..c7b843193 100644 --- a/crates/alien-operator/src/loops/deployment.rs +++ b/crates/alien-operator/src/loops/deployment.rs @@ -477,6 +477,7 @@ mod tests { fn test_deployment_config() -> DeploymentConfig { DeploymentConfig { + input_values: Default::default(), deployment_name: None, stack_settings: StackSettings::default(), management_config: None, diff --git a/crates/alien-preflights/src/compatibility/frozen_resources_unchanged.rs b/crates/alien-preflights/src/compatibility/frozen_resources_unchanged.rs index 1206fd613..9ab53ca43 100644 --- a/crates/alien-preflights/src/compatibility/frozen_resources_unchanged.rs +++ b/crates/alien-preflights/src/compatibility/frozen_resources_unchanged.rs @@ -107,6 +107,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); @@ -118,6 +119,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); @@ -156,6 +158,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); @@ -167,6 +170,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); new_resources.insert( @@ -176,6 +180,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); @@ -220,6 +225,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); @@ -231,6 +237,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); @@ -270,6 +277,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); @@ -281,6 +289,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, // Changed from Frozen to Live dependencies: vec![], remote_access: false, + enabled_when: None, }, ); @@ -320,6 +329,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compatibility/permission_profiles_unchanged.rs b/crates/alien-preflights/src/compatibility/permission_profiles_unchanged.rs index d7a418022..9f8211603 100644 --- a/crates/alien-preflights/src/compatibility/permission_profiles_unchanged.rs +++ b/crates/alien-preflights/src/compatibility/permission_profiles_unchanged.rs @@ -1,13 +1,144 @@ use crate::error::Result; +use crate::mutations::management_permission_profile::GATE_DERIVED_GLOBAL_SUFFIXES; use crate::{CheckResult, StackCompatibilityCheck}; +use alien_core::permissions::{ManagementPermissions, PermissionProfile, PermissionSetReference}; use alien_core::Stack; +use std::collections::HashSet; /// Validates that permission profiles in the stack haven't been modified. /// /// Permission profiles define the security model of the stack and changing them /// during updates could lead to security vulnerabilities or privilege escalation. +/// +/// Grants that follow a resource gated with `.enabled(input)` are exempt from +/// the unchanged requirement, but only for **presence**: the deployer controls +/// that resource's existence, so a scope keyed by its id may appear or +/// disappear with the answer, and the gated types' `/…` entries may +/// enter or leave the derived `'*'` scope. When a gated resource's scope is +/// present on both sides its contents are still compared, so a grant +/// escalation (say `kv/provision` to `kv/data-write`) cannot hide behind the +/// gate. The presence exemption is safe because the setup template renders +/// management grants for live resources unconditionally, so the installed +/// role already covers either answer. pub struct PermissionProfilesUnchangedCheck; +/// The scopes and grant prefixes that follow a deployer's gate, from either +/// stack side: the gated resources' own scope keys, plus the `/` grant +/// prefixes their types contribute to the derived `'*'` scope. +struct GatedContributions { + resource_ids: HashSet, + type_prefixes: HashSet, +} + +fn gated_contributions(old_stack: &Stack, new_stack: &Stack) -> GatedContributions { + let mut resource_ids = HashSet::new(); + let mut type_prefixes = HashSet::new(); + for (resource_id, entry) in old_stack.resources().chain(new_stack.resources()) { + if entry.enabled_when.is_none() { + continue; + } + resource_ids.insert(resource_id.clone()); + // Grant ids use the permission namespace, which is not always the raw + // resource type; building the prefix any other way would silently + // miss the very grants this exemption exists for. + type_prefixes.insert(format!( + "{}/", + crate::mutations::management_permission_profile::permission_resource_type( + entry.config.resource_type().as_ref(), + ) + )); + } + GatedContributions { + resource_ids, + type_prefixes, + } +} + +/// A `'*'`-scope grant list without the entries that follow a gate. +/// +/// Only the derived management suffixes actually follow a gate; exempting a +/// data-capable grant here would let it slip through as soon as any resource +/// of its type is gated. Full references are compared (not their ids), so an +/// inline set whose body changed under a stable id still reads as drift. +fn without_gate_derived<'a>( + grants: Option<&'a Vec>, + gated: &GatedContributions, +) -> Vec<&'a PermissionSetReference> { + grants + .map(|grants| { + grants + .iter() + .filter(|grant| { + !gated.type_prefixes.iter().any(|prefix| { + grant + .id() + .strip_prefix(prefix.as_str()) + .is_some_and(|suffix| GATE_DERIVED_GLOBAL_SUFFIXES.contains(&suffix)) + }) + }) + .collect() + }) + .unwrap_or_default() +} + +/// Whether two profiles differ once the gated presence exemption is applied. +/// +/// A scope keyed by a gated resource's id is exempt only when it exists on +/// exactly one side (the gate toggled); present on both sides, its contents +/// must match. `'*'`-scope entries with a gated type's prefix are exempt in +/// both directions: they are derived per type, so a single gated resource +/// legitimately adds and removes them. +fn profiles_differ_outside_gates( + old_profile: &PermissionProfile, + new_profile: &PermissionProfile, + gated: &GatedContributions, +) -> bool { + let scopes: HashSet<&str> = old_profile + .0 + .keys() + .chain(new_profile.0.keys()) + .map(String::as_str) + .collect(); + + for scope in scopes { + let old_grants = old_profile.0.get(scope); + let new_grants = new_profile.0.get(scope); + + if scope == "*" { + if without_gate_derived(old_grants, gated) != without_gate_derived(new_grants, gated) { + return true; + } + continue; + } + + if gated.resource_ids.contains(scope) && (old_grants.is_none() || new_grants.is_none()) { + continue; + } + + if old_grants != new_grants { + return true; + } + } + + false +} + +fn management_differs_outside_gates( + old_management: &ManagementPermissions, + new_management: &ManagementPermissions, + gated: &GatedContributions, +) -> bool { + match (old_management, new_management) { + (ManagementPermissions::Auto, ManagementPermissions::Auto) => false, + (ManagementPermissions::Extend(old_profile), ManagementPermissions::Extend(new_profile)) + | ( + ManagementPermissions::Override(old_profile), + ManagementPermissions::Override(new_profile), + ) => profiles_differ_outside_gates(old_profile, new_profile, gated), + _ => true, + } +} + #[async_trait::async_trait] impl StackCompatibilityCheck for PermissionProfilesUnchangedCheck { fn description(&self) -> &'static str { @@ -18,6 +149,8 @@ impl StackCompatibilityCheck for PermissionProfilesUnchangedCheck { let mut errors = Vec::new(); let mut warnings = Vec::new(); + let gated = gated_contributions(old_stack, new_stack); + // Check if permission profiles have been added, removed, or modified let old_profiles = &old_stack.permissions.profiles; let new_profiles = &new_stack.permissions.profiles; @@ -36,7 +169,7 @@ impl StackCompatibilityCheck for PermissionProfilesUnchangedCheck { for (profile_name, new_profile) in new_profiles { if let Some(old_profile) = old_profiles.get(profile_name) { // Profile exists in both - check if it was modified - if old_profile != new_profile { + if profiles_differ_outside_gates(old_profile, new_profile, &gated) { errors.push(format!( "Permission profile '{}' was modified", profile_name @@ -52,7 +185,8 @@ impl StackCompatibilityCheck for PermissionProfilesUnchangedCheck { } // Check management permissions - if old_stack.management() != new_stack.management() { + if management_differs_outside_gates(old_stack.management(), new_stack.management(), &gated) + { errors.push("Management permissions configuration was modified".to_string()); } @@ -71,11 +205,252 @@ impl StackCompatibilityCheck for PermissionProfilesUnchangedCheck { #[cfg(test)] mod tests { use super::*; - use alien_core::permissions::{ - ManagementPermissions, PermissionProfile, PermissionSetReference, PermissionsConfig, - }; + use alien_core::permissions::PermissionsConfig; + use alien_core::{Kv, ResourceLifecycle}; use indexmap::IndexMap; + /// The deployer said no to a gated live resource: its scoped management + /// grant leaves with it, and the update must not read that as drift. + #[tokio::test] + async fn a_gated_resources_management_grants_follow_its_gate() { + let old_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().resource("cache", ["kv/provision"]), + )) + .add_enabled_when( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + "cacheEnabled", + ) + .build(); + let new_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend(PermissionProfile::new())) + .build(); + + let toggled_off = PermissionProfilesUnchangedCheck + .check(&old_stack, &new_stack) + .await + .expect("check should run"); + assert!(toggled_off.success, "{:?}", toggled_off.errors); + + let toggled_on = PermissionProfilesUnchangedCheck + .check(&new_stack, &old_stack) + .await + .expect("check should run"); + assert!(toggled_on.success, "{:?}", toggled_on.errors); + } + + /// The derived management profile carries per-type grants in the '*' + /// scope; a gated kv leaving takes `kv/…` entries with it, and the check + /// must read that as the gate's doing, not drift. + #[tokio::test] + async fn a_gated_types_global_grants_follow_its_gate() { + let old_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().global(["kv/provision", "worker/heartbeat"]), + )) + .add_enabled_when( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + "cacheEnabled", + ) + .build(); + let new_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().global(["worker/heartbeat"]), + )) + .build(); + + let toggled_off = PermissionProfilesUnchangedCheck + .check(&old_stack, &new_stack) + .await + .expect("check should run"); + assert!(toggled_off.success, "{:?}", toggled_off.errors); + + let toggled_on = PermissionProfilesUnchangedCheck + .check(&new_stack, &old_stack) + .await + .expect("check should run"); + assert!(toggled_on.success, "{:?}", toggled_on.errors); + } + + /// An ungated type's global grant changing is real drift even while a + /// gate exists on another type. + #[tokio::test] + async fn an_ungated_types_global_grant_change_still_fails() { + let old_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().global(["kv/provision", "worker/heartbeat"]), + )) + .add_enabled_when( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + "cacheEnabled", + ) + .build(); + let new_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().global(["kv/provision", "storage/provision"]), + )) + .add_enabled_when( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + "cacheEnabled", + ) + .build(); + + let result = PermissionProfilesUnchangedCheck + .check(&old_stack, &new_stack) + .await + .expect("check should run"); + assert!(!result.success); + assert!(result.errors[0].contains("Management permissions")); + } + + /// A gated resource's scope present on BOTH sides is not a toggle; a + /// grant escalation inside it must still fail the check, or the gate + /// becomes a hole in the install-time permission approval. + #[tokio::test] + async fn a_grant_escalation_on_a_gated_scope_still_fails() { + let gated_cache_with = |grants: [&str; 1]| { + Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().resource("cache", grants), + )) + .add_enabled_when( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + "cacheEnabled", + ) + .build() + }; + let old_stack = gated_cache_with(["kv/provision"]); + let new_stack = gated_cache_with(["kv/data-write"]); + + let result = PermissionProfilesUnchangedCheck + .check(&old_stack, &new_stack) + .await + .expect("check should run"); + assert!(!result.success); + assert!(result.errors[0].contains("Management permissions")); + } + + /// The same escalation hidden inside a named profile's gated scope fails + /// too, while a pure presence toggle of that scope passes. + #[tokio::test] + async fn named_profile_gated_scopes_toggle_but_never_escalate() { + let gated_stack_with_profile = |grants: Option<[&str; 1]>| { + let profile = match grants { + Some(grants) => PermissionProfile::new().resource("cache", grants), + None => PermissionProfile::new(), + }; + Stack::new("s".to_string()) + .permission("execution", profile) + .add_enabled_when( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + "cacheEnabled", + ) + .build() + }; + + let with_read = gated_stack_with_profile(Some(["kv/data-read"])); + let with_write = gated_stack_with_profile(Some(["kv/data-write"])); + let without = gated_stack_with_profile(None); + + let toggled = PermissionProfilesUnchangedCheck + .check(&with_read, &without) + .await + .expect("check should run"); + assert!(toggled.success, "{:?}", toggled.errors); + + let escalated = PermissionProfilesUnchangedCheck + .check(&with_read, &with_write) + .await + .expect("check should run"); + assert!(!escalated.success); + assert!(escalated.errors[0].contains("'execution'")); + } + + /// A '*'-scoped DATA grant for a gated type is user-authored, not + /// gate-derived; adding one must read as drift even while the type has a + /// gate (defense in depth next to the compile-time wildcard net). + #[tokio::test] + async fn a_global_data_grant_never_hides_behind_a_gate() { + let gated_kv_with_globals = |grants: &[&str]| { + Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().global(grants.iter().copied()), + )) + .add_enabled_when( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + "cacheEnabled", + ) + .build() + }; + let old_stack = gated_kv_with_globals(&["kv/provision"]); + let new_stack = gated_kv_with_globals(&["kv/provision", "kv/data-write"]); + + let result = PermissionProfilesUnchangedCheck + .check(&old_stack, &new_stack) + .await + .expect("check should run"); + assert!(!result.success); + assert!(result.errors[0].contains("Management permissions")); + } + + /// Removing a gate in the new release must not exempt that type's data + /// grants: the gated-type union spans both sides, and only the derived + /// management suffixes follow the gate. + #[tokio::test] + async fn a_removed_gate_does_not_exempt_new_global_data_grants() { + let old_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().global(["kv/provision"]), + )) + .add_enabled_when( + Kv::new("cache".to_string()).build(), + ResourceLifecycle::Live, + "cacheEnabled", + ) + .build(); + let new_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().global(["kv/provision", "kv/data-write"]), + )) + .add(Kv::new("cache".to_string()).build(), ResourceLifecycle::Live) + .build(); + + let result = PermissionProfilesUnchangedCheck + .check(&old_stack, &new_stack) + .await + .expect("check should run"); + assert!(!result.success); + assert!(result.errors[0].contains("Management permissions")); + } + + /// The same management change without a gate is real drift and still fails. + #[tokio::test] + async fn an_ungated_management_change_still_fails() { + let old_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend( + PermissionProfile::new().resource("cache", ["kv/provision"]), + )) + .add(Kv::new("cache".to_string()).build(), ResourceLifecycle::Live) + .build(); + let new_stack = Stack::new("s".to_string()) + .management(ManagementPermissions::Extend(PermissionProfile::new())) + .build(); + + let result = PermissionProfilesUnchangedCheck + .check(&old_stack, &new_stack) + .await + .expect("check should run"); + assert!(!result.success); + assert!(result.errors[0].contains("Management permissions")); + } + #[tokio::test] async fn test_unchanged_profiles_success() { let mut profile = PermissionProfile::new(); diff --git a/crates/alien-preflights/src/compile_time/allowed_user_resources.rs b/crates/alien-preflights/src/compile_time/allowed_user_resources.rs index bd7af09fd..4fccb9acc 100644 --- a/crates/alien-preflights/src/compile_time/allowed_user_resources.rs +++ b/crates/alien-preflights/src/compile_time/allowed_user_resources.rs @@ -96,6 +96,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -105,6 +106,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -114,6 +116,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -123,6 +126,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -161,6 +165,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -191,6 +196,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/capacity_group_profile.rs b/crates/alien-preflights/src/compile_time/capacity_group_profile.rs index 57ae9147a..04511f46a 100644 --- a/crates/alien-preflights/src/compile_time/capacity_group_profile.rs +++ b/crates/alien-preflights/src/compile_time/capacity_group_profile.rs @@ -129,6 +129,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); Stack { diff --git a/crates/alien-preflights/src/compile_time/container_lifecycle.rs b/crates/alien-preflights/src/compile_time/container_lifecycle.rs index 899e7e8cc..512148dc1 100644 --- a/crates/alien-preflights/src/compile_time/container_lifecycle.rs +++ b/crates/alien-preflights/src/compile_time/container_lifecycle.rs @@ -94,6 +94,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, // Correct dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -123,6 +124,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, // Wrong dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/external_bindings_required.rs b/crates/alien-preflights/src/compile_time/external_bindings_required.rs index e5a853d24..ce1b389b6 100644 --- a/crates/alien-preflights/src/compile_time/external_bindings_required.rs +++ b/crates/alien-preflights/src/compile_time/external_bindings_required.rs @@ -128,6 +128,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -137,6 +138,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } diff --git a/crates/alien-preflights/src/compile_time/frozen_resource_lifecycle.rs b/crates/alien-preflights/src/compile_time/frozen_resource_lifecycle.rs index c83c8d1d7..f33c5ef27 100644 --- a/crates/alien-preflights/src/compile_time/frozen_resource_lifecycle.rs +++ b/crates/alien-preflights/src/compile_time/frozen_resource_lifecycle.rs @@ -69,6 +69,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -78,6 +79,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -108,6 +110,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -142,6 +145,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -185,6 +189,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -224,6 +229,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -253,6 +259,7 @@ mod tests { lifecycle, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/live_provision_permissions.rs b/crates/alien-preflights/src/compile_time/live_provision_permissions.rs index f8710a701..4c4163e8a 100644 --- a/crates/alien-preflights/src/compile_time/live_provision_permissions.rs +++ b/crates/alien-preflights/src/compile_time/live_provision_permissions.rs @@ -111,6 +111,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/machines_resources.rs b/crates/alien-preflights/src/compile_time/machines_resources.rs index 9fdf89996..efffdcc9c 100644 --- a/crates/alien-preflights/src/compile_time/machines_resources.rs +++ b/crates/alien-preflights/src/compile_time/machines_resources.rs @@ -81,6 +81,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } diff --git a/crates/alien-preflights/src/compile_time/mod.rs b/crates/alien-preflights/src/compile_time/mod.rs index ee2ed7e9f..2e676b52b 100644 --- a/crates/alien-preflights/src/compile_time/mod.rs +++ b/crates/alien-preflights/src/compile_time/mod.rs @@ -11,6 +11,7 @@ pub mod machines_resources; pub mod network_required; pub mod permission_profiles_exist; pub mod public_worker_lifecycle; +pub mod resource_enabled_valid; pub mod resource_id_pattern; pub mod resource_name_length; pub mod resource_references_exist; @@ -35,6 +36,7 @@ pub use network_required::{ }; pub use permission_profiles_exist::PermissionProfilesExistCheck; pub use public_worker_lifecycle::PublicWorkerLifecycleCheck; +pub use resource_enabled_valid::ResourceEnabledValidCheck; pub use resource_id_pattern::ResourceIdPatternCheck; pub use resource_name_length::ResourceNameLengthCheck; pub use resource_references_exist::ResourceReferencesExistCheck; diff --git a/crates/alien-preflights/src/compile_time/network_required.rs b/crates/alien-preflights/src/compile_time/network_required.rs index e75f77dc4..28c315794 100644 --- a/crates/alien-preflights/src/compile_time/network_required.rs +++ b/crates/alien-preflights/src/compile_time/network_required.rs @@ -270,6 +270,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -293,6 +294,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -318,6 +320,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -352,6 +355,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); let stack = create_stack(resources); @@ -370,6 +374,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); let stack = create_stack(resources); diff --git a/crates/alien-preflights/src/compile_time/permission_profiles_exist.rs b/crates/alien-preflights/src/compile_time/permission_profiles_exist.rs index 05a69c63a..ec34fe245 100644 --- a/crates/alien-preflights/src/compile_time/permission_profiles_exist.rs +++ b/crates/alien-preflights/src/compile_time/permission_profiles_exist.rs @@ -141,6 +141,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -183,6 +184,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -228,6 +230,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -237,6 +240,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/public_worker_lifecycle.rs b/crates/alien-preflights/src/compile_time/public_worker_lifecycle.rs index 8932d92e4..2f8c1b584 100644 --- a/crates/alien-preflights/src/compile_time/public_worker_lifecycle.rs +++ b/crates/alien-preflights/src/compile_time/public_worker_lifecycle.rs @@ -89,6 +89,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, // Wrong! dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -119,6 +120,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, // Correct dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -148,6 +150,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, // OK for private dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -178,6 +181,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/resource_enabled_valid.rs b/crates/alien-preflights/src/compile_time/resource_enabled_valid.rs new file mode 100644 index 000000000..4030099cb --- /dev/null +++ b/crates/alien-preflights/src/compile_time/resource_enabled_valid.rs @@ -0,0 +1,574 @@ +//! Validates `resource.enabled(input)` before anything renders. +//! +//! Most rules here exist because breaking them makes the resource get created +//! anyway, which is the one outcome the feature must never produce. The setup +//! emitters render a frozen gate as `count = var.input_x ? 1 : 0` (Terraform) +//! or an `Fn::Equals` condition (CloudFormation), and the runner resolves a +//! live gate from the deployment's input values, so the input has to be a +//! deployer variable that exists on the target and always holds a real +//! boolean. +//! +//! Two rules cover what a gate cannot reach on its own: a `"*"`-scoped grant is +//! read straight off the profile and keeps its access after the resource is gone, +//! and a dependent of a gated resource looks up outputs that will not be there. + +use crate::error::Result; +use crate::mutations::secrets_vault::SECRETS_VAULT_ID; +use crate::{CheckResult, CompileTimeCheck}; +use alien_core::{Platform, Stack, StackInputKind, StackInputProvider}; +use std::collections::HashMap; + +/// Rejects `.enabled()` uses that could not actually keep the resource out. +pub struct ResourceEnabledValidCheck; + +#[async_trait::async_trait] +impl CompileTimeCheck for ResourceEnabledValidCheck { + fn description(&self) -> &'static str { + "Resources enabled by a stack input must be gated on a deployer-supplied boolean" + } + + fn should_run(&self, stack: &Stack, _platform: Platform) -> bool { + stack + .resources() + .any(|(_, entry)| entry.enabled_when.is_some()) + } + + async fn check(&self, stack: &Stack, platform: Platform) -> Result { + let mut errors = Vec::new(); + + for (resource_id, entry) in stack.resources() { + let Some(input_id) = entry.enabled_when.as_deref() else { + continue; + }; + + // `SecretsVaultMutation` links this vault to Live Workers and compute clusters + // after every compile-time check has run, so `dependents_of_gated_resources` + // below reads a stack where those links do not exist yet and lets the gate pass. + if resource_id == SECRETS_VAULT_ID { + errors.push(format!( + "Resource '{resource_id}' is enabled by input '{input_id}', but \ + '{SECRETS_VAULT_ID}' is the deployment secrets vault. Workers and compute \ + clusters are wired to it automatically after this check runs, so a deployer \ + who says no would leave them resolving a binding for a vault that was never \ + created. Its presence cannot be optional. Give a vault you want to gate a \ + different id" + )); + } + + let resource_type = entry.config.resource_type(); + + // Framework infrastructure Alien derives from the stack itself. A gate + // here is never a customer choice, and ServiceAccountMutation inserts + // profile-derived "{profile}-sa" entries unconditionally, which would + // silently overwrite a gated entry before any render guard could fire. + // The SDK does not offer .enabled() on these; this keeps hand-authored + // stacks to the same rule. + if matches!( + resource_type.as_ref(), + "build" | "artifact-registry" | "service-account" | "compute-cluster" + ) { + errors.push(format!( + "Resource '{resource_id}' of type '{resource_type}' is enabled by input \ + '{input_id}', but Alien derives this resource from the stack itself, so \ + it cannot be optional" + )); + continue; + } + + // Code-carrying compute ships with every release; whether it runs + // is a rollout question, not a data-plane opt-out, so gating it is + // a different feature than this one. Live-only ownership is the + // compute classification, read from the one table that defines it + // so a new compute type cannot silently become gateable. + if !alien_core::ownership_policy_for_resource_type(resource_type.as_ref()) + .allows_frozen() + { + errors.push(format!( + "Resource '{resource_id}' of type '{resource_type}' is enabled by input \ + '{input_id}', but code-carrying compute ships with every release, so it \ + cannot be optional" + )); + continue; + } + + // `ServiceAccount::from_permission_profile` builds the runtime role from the + // profile's "*" key alone. It never sees the resource list, so gating the + // resource cannot take a wildcard grant back off the role. + // Grant ids use the permission namespace, which is not always the + // raw resource type; a raw-type prefix would let a '*' grant for a + // remapped type slip past this net. + let permission_set_prefix = format!( + "{}/", + crate::mutations::management_permission_profile::permission_resource_type( + resource_type.as_ref(), + ) + ); + let named_profiles = stack + .permissions + .profiles + .iter() + .map(|(name, profile)| (name.as_str(), profile)); + // The management profile grants the same way and its role outlives + // any single resource, so it is swept by the same rule. + let management_profile = stack + .management() + .profile() + .map(|profile| ("management", profile)); + for (profile_name, profile) in named_profiles.chain(management_profile) { + let Some(wildcard_grants) = profile.0.get("*") else { + continue; + }; + + for grant in wildcard_grants { + if !grant.id().starts_with(&permission_set_prefix) { + continue; + } + + errors.push(format!( + "Profile '{profile_name}' grants '{}' at the '*' scope while resource \ + '{resource_id}' is enabled by input '{input_id}'. A '*' grant is read \ + off the profile alone, so it stays on the runtime role after a deployer \ + says no and leaves the access without the resource. Remove the '*' grant \ + and .link() '{resource_id}' from the compute resource instead, which \ + scopes the grant to that resource so it follows the gate", + grant.id() + )); + } + } + + let Some(input) = stack.inputs.iter().find(|input| input.id == input_id) else { + errors.push(format!( + "Resource '{resource_id}' is enabled by input '{input_id}', which the stack \ + does not declare" + )); + continue; + }; + + if input.kind != StackInputKind::Boolean { + errors.push(format!( + "Resource '{resource_id}' is enabled by input '{input_id}', which is {:?}. \ + Only a boolean can decide whether a resource exists", + input.kind + )); + } + + if !input.provided_by.contains(&StackInputProvider::Deployer) { + errors.push(format!( + "Input '{input_id}' enables resource '{resource_id}' but is not \ + deployer-provided, so it never reaches the setup template and the resource \ + would be created whatever the deployer chose" + )); + } + + if !input.required && input.default.is_none() { + errors.push(format!( + "Input '{input_id}' enables resource '{resource_id}', so it must be required \ + or declare a default. An optional input with neither renders as null, and \ + whether the resource exists would be undecided" + )); + } + + if let Some(platforms) = input.platforms.as_ref() { + if !platforms.contains(&platform) { + errors.push(format!( + "Input '{input_id}' enables resource '{resource_id}' but is scoped to \ + {platforms:?}, so it is absent from the {platform:?} setup template \ + while the resource is still in it" + )); + } + } + } + + errors.extend(dependents_of_gated_resources(stack)); + + if errors.is_empty() { + Ok(CheckResult::success()) + } else { + Ok(CheckResult::failed(errors)) + } + } +} + +/// Rejects resources that would outlive a gated resource they read outputs from. +/// +/// `StackState::get_resource_outputs` errors when a resource is absent, so an +/// ungated dependent of a gated resource fails at deploy time in the customer's +/// account. Catching it here fails when the manifest is written instead. +fn dependents_of_gated_resources(stack: &Stack) -> Vec { + let gates: HashMap<&str, &str> = stack + .resources() + .filter_map(|(id, entry)| Some((id.as_str(), entry.enabled_when.as_deref()?))) + .collect(); + + let mut errors = Vec::new(); + for (dependent_id, entry) in stack.resources() { + // `ResourceEntry` documents the total as `config.get_dependencies()` plus its own + // list, and each compute type folds its links and triggers into the former. That + // canonical aggregation is used here rather than the per-type downcast in + // `resource_link_permissions`, which only keeps the permission-bearing link types. + let config_dependencies = entry.config.get_dependencies(); + + for dependency in config_dependencies.iter().chain(&entry.dependencies) { + let Some(dependency_gate) = gates.get(dependency.id()) else { + continue; + }; + let dependency_id = dependency.id(); + + match entry.enabled_when.as_deref() { + Some(gate) if gate == *dependency_gate => {} + Some(gate) => errors.push(format!( + "Resource '{dependent_id}' depends on '{dependency_id}', but the two are \ + gated on different inputs: '{gate}' and '{dependency_gate}'. Nothing makes a \ + deployer answer both the same way, so '{dependent_id}' can be created while \ + '{dependency_id}' is not. Gate both on '{dependency_gate}'" + )), + None => errors.push(format!( + "Resource '{dependent_id}' depends on '{dependency_id}', which is enabled by \ + input '{dependency_gate}'. A deployer who says no would leave \ + '{dependent_id}' looking up outputs of a resource that was never created. \ + Gate '{dependent_id}' on '{dependency_gate}' too" + )), + } + } + } + + errors +} + +#[cfg(test)] +mod tests { + use super::*; + use alien_core::{ + permissions::PermissionProfile, Kv, Storage, ResourceLifecycle, StackInputDefinition, + Vault, Worker, WorkerCode, + }; + + fn boolean_input() -> StackInputDefinition { + StackInputDefinition::deployer_boolean( + "storeEnabled", + "Enable the store", + "Whether to create the key-value store.", + Some(true), + ) + } + + fn stack_with(input: StackInputDefinition) -> Stack { + Stack::new("test-stack".to_string()) + .inputs(vec![input]) + .add_enabled_when( + Kv::new("store".to_string()).build(), + ResourceLifecycle::Frozen, + "storeEnabled", + ) + .build() + } + + async fn errors_for(stack: Stack) -> Vec { + ResourceEnabledValidCheck + .check(&stack, Platform::Aws) + .await + .expect("check should run") + .errors + } + + #[tokio::test] + async fn rejects_a_framework_derived_resource() { + let stack = Stack::new("test-stack".to_string()) + .inputs(vec![boolean_input()]) + .add_enabled_when( + alien_core::ServiceAccount::new("execution-sa".to_string()).build(), + ResourceLifecycle::Frozen, + "storeEnabled", + ) + .build(); + + let errors = errors_for(stack).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("cannot be optional"), "{errors:?}"); + } + + #[tokio::test] + async fn accepts_a_setup_created_resource_on_a_deployer_boolean() { + let stack = stack_with(boolean_input()); + assert!(errors_for(stack).await.is_empty()); + } + + /// The runner follows a live gate by input value, so a live data resource + /// is as gateable as a frozen one. + #[tokio::test] + async fn accepts_a_gated_live_data_resource() { + let stack = Stack::new("test-stack".to_string()) + .inputs(vec![boolean_input()]) + .add_enabled_when( + Kv::new("store".to_string()).build(), + ResourceLifecycle::Live, + "storeEnabled", + ) + .build(); + assert!(errors_for(stack).await.is_empty()); + } + + /// Compute stays out: gating code-carrying resources is a rollout + /// question, not a data-plane opt-out. + #[tokio::test] + async fn rejects_a_gated_compute_resource() { + let stack = Stack::new("test-stack".to_string()) + .inputs(vec![boolean_input()]) + .add_enabled_when( + Worker::new("proxy".to_string()) + .permissions("proxy".to_string()) + .code(WorkerCode::Image { + image: "example.com/proxy:latest".to_string(), + }) + .build(), + ResourceLifecycle::Live, + "storeEnabled", + ) + .build(); + + let errors = errors_for(stack).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("cannot be optional"), "{errors:?}"); + } + + #[tokio::test] + async fn rejects_an_undeclared_input() { + let mut input = boolean_input(); + input.id = "somethingElse".to_string(); + let errors = errors_for(stack_with(input)).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("does not declare"), "{errors:?}"); + } + + #[tokio::test] + async fn rejects_a_non_boolean_input() { + let mut input = boolean_input(); + input.kind = StackInputKind::String; + input.default = None; + input.required = true; + let errors = errors_for(stack_with(input)).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("Only a boolean"), "{errors:?}"); + } + + /// A developer-only input never reaches the template, so the resource would + /// be created no matter what the deployer picked. + #[tokio::test] + async fn rejects_an_input_the_deployer_cannot_supply() { + let mut input = boolean_input(); + input.provided_by = vec![StackInputProvider::Developer]; + let errors = errors_for(stack_with(input)).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("not deployer-provided"), "{errors:?}"); + } + + /// Terraform renders an optional input with no default as null, and + /// `var.x ? 1 : 0` on null fails at apply. + #[tokio::test] + async fn rejects_an_optional_input_with_no_default() { + let mut input = boolean_input(); + input.required = false; + input.default = None; + let errors = errors_for(stack_with(input)).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("required or declare a default"), "{errors:?}"); + } + + #[tokio::test] + async fn rejects_an_input_scoped_away_from_the_target_platform() { + let mut input = boolean_input(); + input.platforms = Some(vec![Platform::Gcp]); + let errors = errors_for(stack_with(input)).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("scoped to"), "{errors:?}"); + } + + /// The runtime role is built from the profile's "*" key alone, so this grant + /// outlives the resource it was meant for. + #[tokio::test] + async fn rejects_a_wildcard_grant_for_the_gated_resource_type() { + let stack = Stack::new("test-stack".to_string()) + .inputs(vec![boolean_input()]) + .permission( + "execution", + PermissionProfile::new().global(["kv/data-write"]), + ) + .add_enabled_when( + Kv::new("store".to_string()).build(), + ResourceLifecycle::Frozen, + "storeEnabled", + ) + .build(); + + let errors = errors_for(stack).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("at the '*' scope"), "{errors:?}"); + assert!(errors[0].contains(".link() 'store'"), "{errors:?}"); + } + + /// The same grant scoped to the resource is what `.link()` authors, and it + /// disappears with the resource. + #[tokio::test] + async fn accepts_a_resource_scoped_grant_for_the_gated_resource_type() { + let stack = Stack::new("test-stack".to_string()) + .inputs(vec![boolean_input()]) + .permission( + "execution", + PermissionProfile::new().resource("store", ["kv/data-write"]), + ) + .add_enabled_when( + Kv::new("store".to_string()).build(), + ResourceLifecycle::Frozen, + "storeEnabled", + ) + .build(); + + assert!(errors_for(stack).await.is_empty()); + } + + /// A wildcard grant for an unrelated resource type is untouched by this gate. + #[tokio::test] + async fn accepts_a_wildcard_grant_for_another_resource_type() { + let stack = Stack::new("test-stack".to_string()) + .inputs(vec![boolean_input()]) + .permission( + "execution", + PermissionProfile::new().global(["storage/data-write"]), + ) + .add_enabled_when( + Kv::new("store".to_string()).build(), + ResourceLifecycle::Frozen, + "storeEnabled", + ) + .build(); + + assert!(errors_for(stack).await.is_empty()); + } + + /// The management role is granted the same way and outlives any single + /// resource, so a '*'-scoped grant there evades nothing. + #[tokio::test] + async fn rejects_a_wildcard_management_grant_for_the_gated_resource_type() { + let stack = Stack::new("test-stack".to_string()) + .inputs(vec![boolean_input()]) + .management(alien_core::ManagementPermissions::extend( + PermissionProfile::new().global(["kv/data-write"]), + )) + .add_enabled_when( + Kv::new("store".to_string()).build(), + ResourceLifecycle::Frozen, + "storeEnabled", + ) + .build(); + + let errors = errors_for(stack).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("'management'"), "{errors:?}"); + assert!(errors[0].contains("at the '*' scope"), "{errors:?}"); + } + + /// Builds a stack whose bucket depends on a gated store through an explicit + /// entry dependency, with the bucket's own gate supplied by the caller. Both + /// are plain data resources, so only the dependency rule is under test. + fn stack_with_bucket_depending_on_gated_store(bucket_gate: Option<&str>) -> Stack { + let store = Kv::new("store".to_string()).build(); + let bucket = Storage::new("packager".to_string()).build(); + let store_ref = alien_core::ResourceRef::new("kv".into(), "store"); + + let mut bucket_input = boolean_input(); + bucket_input.id = "buildEnabled".to_string(); + let builder = Stack::new("test-stack".to_string()) + .inputs(vec![boolean_input(), bucket_input]) + .add_enabled_when(store, ResourceLifecycle::Frozen, "storeEnabled"); + + let mut stack = match bucket_gate { + Some(gate) => builder.add_enabled_when(bucket, ResourceLifecycle::Frozen, gate), + None => builder.add(bucket, ResourceLifecycle::Frozen), + } + .build(); + stack + .resources + .get_mut("packager") + .expect("bucket entry") + .dependencies + .push(store_ref); + stack + } + + /// `StackState::get_resource_outputs` errors on a missing resource, so this + /// build breaks at deploy time for every deployer who says no. + #[tokio::test] + async fn rejects_an_ungated_dependent_of_a_gated_resource() { + let errors = errors_for(stack_with_bucket_depending_on_gated_store(None)).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!( + errors[0].contains("Resource 'packager' depends on 'store'"), + "{errors:?}" + ); + assert!( + errors[0].contains("Gate 'packager' on 'storeEnabled'"), + "{errors:?}" + ); + } + + #[tokio::test] + async fn accepts_a_dependent_gated_on_the_same_input() { + let stack = stack_with_bucket_depending_on_gated_store(Some("storeEnabled")); + assert!(errors_for(stack).await.is_empty()); + } + + /// Two inputs mean two independent answers, and only one of them creates the store. + #[tokio::test] + async fn rejects_a_dependent_gated_on_a_different_input() { + let errors = errors_for(stack_with_bucket_depending_on_gated_store(Some("buildEnabled"))).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("gated on different inputs"), "{errors:?}"); + assert!( + errors[0].contains("'buildEnabled' and 'storeEnabled'"), + "{errors:?}" + ); + } + + /// Builds a stack whose only gated resource is a vault with the given id. + fn stack_with_gated_vault(vault_id: &str) -> Stack { + let mut input = boolean_input(); + input.id = "vaultEnabled".to_string(); + + Stack::new("test-stack".to_string()) + .inputs(vec![input]) + .add_enabled_when( + Vault::new(vault_id.to_string()).build(), + ResourceLifecycle::Frozen, + "vaultEnabled", + ) + .build() + } + + /// `SecretsVaultMutation` links this vault to Workers and compute clusters after + /// every compile-time check has run. The dependents rule reads the pre-mutation + /// stack, so nothing else here can catch a gate on it. + #[tokio::test] + async fn rejects_a_gated_deployment_secrets_vault() { + let errors = errors_for(stack_with_gated_vault(SECRETS_VAULT_ID)).await; + assert_eq!(errors.len(), 1, "{errors:?}"); + assert!(errors[0].contains("deployment secrets vault"), "{errors:?}"); + assert!(errors[0].contains("cannot be optional"), "{errors:?}"); + } + + /// Only the reserved id is wired up behind the check's back; any other vault + /// gates like a normal setup-created resource. + #[tokio::test] + async fn accepts_a_gated_vault_with_another_id() { + assert!(errors_for(stack_with_gated_vault("app-tokens")) + .await + .is_empty()); + } + + #[tokio::test] + async fn ungated_stacks_skip_the_check_entirely() { + let stack = Stack::new("test-stack".to_string()) + .add(Kv::new("store".to_string()).build(), ResourceLifecycle::Frozen) + .build(); + assert!(!ResourceEnabledValidCheck.should_run(&stack, Platform::Aws)); + } +} diff --git a/crates/alien-preflights/src/compile_time/resource_id_pattern.rs b/crates/alien-preflights/src/compile_time/resource_id_pattern.rs index 4bfa8800e..c04a1c3ec 100644 --- a/crates/alien-preflights/src/compile_time/resource_id_pattern.rs +++ b/crates/alien-preflights/src/compile_time/resource_id_pattern.rs @@ -99,6 +99,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } diff --git a/crates/alien-preflights/src/compile_time/resource_name_length.rs b/crates/alien-preflights/src/compile_time/resource_name_length.rs index 45fc9d6ed..86ce147b2 100644 --- a/crates/alien-preflights/src/compile_time/resource_name_length.rs +++ b/crates/alien-preflights/src/compile_time/resource_name_length.rs @@ -234,6 +234,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -244,6 +245,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -254,6 +256,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } diff --git a/crates/alien-preflights/src/compile_time/resource_references_exist.rs b/crates/alien-preflights/src/compile_time/resource_references_exist.rs index 0d48cb51d..6eaf037fd 100644 --- a/crates/alien-preflights/src/compile_time/resource_references_exist.rs +++ b/crates/alien-preflights/src/compile_time/resource_references_exist.rs @@ -86,6 +86,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -95,6 +96,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -131,6 +133,7 @@ mod tests { "nonexistent-storage".to_string(), // Reference to non-existent resource )], remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/service_account_impersonate_validation.rs b/crates/alien-preflights/src/compile_time/service_account_impersonate_validation.rs index 547d2ffa9..cc5a3207b 100644 --- a/crates/alien-preflights/src/compile_time/service_account_impersonate_validation.rs +++ b/crates/alien-preflights/src/compile_time/service_account_impersonate_validation.rs @@ -240,6 +240,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/single_queue_trigger.rs b/crates/alien-preflights/src/compile_time/single_queue_trigger.rs index 22d5f77d2..a57aedff3 100644 --- a/crates/alien-preflights/src/compile_time/single_queue_trigger.rs +++ b/crates/alien-preflights/src/compile_time/single_queue_trigger.rs @@ -77,6 +77,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -86,6 +87,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -124,6 +126,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -133,6 +136,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -142,6 +146,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/stack_inputs.rs b/crates/alien-preflights/src/compile_time/stack_inputs.rs index a3aa9933f..3674f42d1 100644 --- a/crates/alien-preflights/src/compile_time/stack_inputs.rs +++ b/crates/alien-preflights/src/compile_time/stack_inputs.rs @@ -344,6 +344,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: vec![], remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/trigger_edge_ownership.rs b/crates/alien-preflights/src/compile_time/trigger_edge_ownership.rs index 5405a684f..dacee0bbc 100644 --- a/crates/alien-preflights/src/compile_time/trigger_edge_ownership.rs +++ b/crates/alien-preflights/src/compile_time/trigger_edge_ownership.rs @@ -142,6 +142,7 @@ mod tests { lifecycle: storage_lifecycle, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -151,6 +152,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/unique_resources.rs b/crates/alien-preflights/src/compile_time/unique_resources.rs index 0f37b08f5..448411539 100644 --- a/crates/alien-preflights/src/compile_time/unique_resources.rs +++ b/crates/alien-preflights/src/compile_time/unique_resources.rs @@ -82,6 +82,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -115,6 +116,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -124,6 +126,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -154,6 +157,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -163,6 +167,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/valid_resource_dependencies.rs b/crates/alien-preflights/src/compile_time/valid_resource_dependencies.rs index dce368d26..360f91bfd 100644 --- a/crates/alien-preflights/src/compile_time/valid_resource_dependencies.rs +++ b/crates/alien-preflights/src/compile_time/valid_resource_dependencies.rs @@ -132,6 +132,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -141,6 +142,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -179,6 +181,7 @@ mod tests { "worker".to_string(), )], // storage depends on worker - creates cycle remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -188,6 +191,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/compile_time/worker_memory.rs b/crates/alien-preflights/src/compile_time/worker_memory.rs index 08cc3f0a2..645514c69 100644 --- a/crates/alien-preflights/src/compile_time/worker_memory.rs +++ b/crates/alien-preflights/src/compile_time/worker_memory.rs @@ -117,6 +117,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); Stack { diff --git a/crates/alien-preflights/src/deployment_prerequisites.rs b/crates/alien-preflights/src/deployment_prerequisites.rs index 9d4ee602f..403266d45 100644 --- a/crates/alien-preflights/src/deployment_prerequisites.rs +++ b/crates/alien-preflights/src/deployment_prerequisites.rs @@ -555,6 +555,7 @@ mod tests { hash: "empty".to_string(), created_at: "2026-05-13T00:00:00Z".to_string(), }, + input_values: Default::default(), allow_frozen_changes: false, compute_backend: None, external_bindings: Default::default(), @@ -652,6 +653,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -684,6 +686,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -723,6 +726,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -744,6 +748,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -753,6 +758,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -762,6 +768,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } diff --git a/crates/alien-preflights/src/lib.rs b/crates/alien-preflights/src/lib.rs index 1e5d73417..2325aacff 100644 --- a/crates/alien-preflights/src/lib.rs +++ b/crates/alien-preflights/src/lib.rs @@ -322,6 +322,7 @@ impl PreflightRegistry { // Add compile-time checks registry.add_compile_time_check(Box::new(compile_time::AllowedUserResourcesCheck)); registry.add_compile_time_check(Box::new(compile_time::UniqueResourcesCheck)); + registry.add_compile_time_check(Box::new(compile_time::ResourceEnabledValidCheck)); registry.add_compile_time_check(Box::new(compile_time::FrozenResourceLifecycleCheck)); registry.add_compile_time_check(Box::new(compile_time::ContainerLifecycleCheck)); registry.add_compile_time_check(Box::new(compile_time::PublicWorkerLifecycleCheck)); diff --git a/crates/alien-preflights/src/mutations/azure_container_apps_environment.rs b/crates/alien-preflights/src/mutations/azure_container_apps_environment.rs index 6b6c37cc5..8b31f4b92 100644 --- a/crates/alien-preflights/src/mutations/azure_container_apps_environment.rs +++ b/crates/alien-preflights/src/mutations/azure_container_apps_environment.rs @@ -71,6 +71,7 @@ impl StackMutation for AzureContainerAppsEnvironmentMutation { // Add it to the stack as a frozen resource let env_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(container_env), lifecycle: ResourceLifecycle::Frozen, dependencies, diff --git a/crates/alien-preflights/src/mutations/azure_resource_group.rs b/crates/alien-preflights/src/mutations/azure_resource_group.rs index 00fb76f9e..d51a795fa 100644 --- a/crates/alien-preflights/src/mutations/azure_resource_group.rs +++ b/crates/alien-preflights/src/mutations/azure_resource_group.rs @@ -71,6 +71,7 @@ impl StackMutation for AzureResourceGroupMutation { // Add it to the stack as a frozen resource (created once during setup) let resource_group_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(resource_group), lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), // No dependencies on other resources diff --git a/crates/alien-preflights/src/mutations/azure_service_activation.rs b/crates/alien-preflights/src/mutations/azure_service_activation.rs index 7c2e30842..84ca5d4fa 100644 --- a/crates/alien-preflights/src/mutations/azure_service_activation.rs +++ b/crates/alien-preflights/src/mutations/azure_service_activation.rs @@ -96,6 +96,7 @@ impl StackMutation for AzureServiceActivationMutation { // Add it to the stack as a frozen resource let service_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(service_activation), lifecycle: ResourceLifecycle::Frozen, dependencies: vec![resource_group_ref.clone()], // Depend on resource group diff --git a/crates/alien-preflights/src/mutations/azure_service_bus_namespace.rs b/crates/alien-preflights/src/mutations/azure_service_bus_namespace.rs index 27bf6d583..cffb016ae 100644 --- a/crates/alien-preflights/src/mutations/azure_service_bus_namespace.rs +++ b/crates/alien-preflights/src/mutations/azure_service_bus_namespace.rs @@ -83,6 +83,7 @@ impl StackMutation for AzureServiceBusNamespaceMutation { // Add it to the stack as a frozen resource let namespace_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(service_bus_namespace), lifecycle: ResourceLifecycle::Frozen, dependencies, diff --git a/crates/alien-preflights/src/mutations/azure_storage_account.rs b/crates/alien-preflights/src/mutations/azure_storage_account.rs index 7d0906e6e..15b0ad161 100644 --- a/crates/alien-preflights/src/mutations/azure_storage_account.rs +++ b/crates/alien-preflights/src/mutations/azure_storage_account.rs @@ -74,6 +74,7 @@ impl StackMutation for AzureStorageAccountMutation { // Add it to the stack as a frozen resource let account_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(storage_account), lifecycle: ResourceLifecycle::Frozen, dependencies, diff --git a/crates/alien-preflights/src/mutations/compute_cluster.rs b/crates/alien-preflights/src/mutations/compute_cluster.rs index c92afbea5..8410a8f8e 100644 --- a/crates/alien-preflights/src/mutations/compute_cluster.rs +++ b/crates/alien-preflights/src/mutations/compute_cluster.rs @@ -382,6 +382,7 @@ impl ComputeClusterMutation { // The cluster boundary is setup-owned. Runtime management may still // scale or roll workers inside the setup-created boundary. let cluster_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(cluster), lifecycle: ResourceLifecycle::Frozen, dependencies, @@ -1574,6 +1575,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1631,6 +1633,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1659,6 +1662,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1705,6 +1709,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1760,6 +1765,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1838,6 +1844,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1904,6 +1911,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1955,6 +1963,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1981,6 +1990,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -2036,6 +2046,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -2092,6 +2103,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -2178,6 +2190,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -2207,6 +2220,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -2316,6 +2330,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -2325,6 +2340,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -2401,6 +2417,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -2485,6 +2502,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -2494,6 +2512,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -2574,6 +2593,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -2583,6 +2603,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/mutations/gcp_service_activation.rs b/crates/alien-preflights/src/mutations/gcp_service_activation.rs index c4fc13263..f51c30263 100644 --- a/crates/alien-preflights/src/mutations/gcp_service_activation.rs +++ b/crates/alien-preflights/src/mutations/gcp_service_activation.rs @@ -96,6 +96,7 @@ impl StackMutation for GcpServiceActivationMutation { // Add it to the stack as a frozen resource let service_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(service_activation), lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), // GCP service activations don't depend on other resources diff --git a/crates/alien-preflights/src/mutations/infrastructure_dependencies.rs b/crates/alien-preflights/src/mutations/infrastructure_dependencies.rs index 533ca0aaf..3df1d9d8b 100644 --- a/crates/alien-preflights/src/mutations/infrastructure_dependencies.rs +++ b/crates/alien-preflights/src/mutations/infrastructure_dependencies.rs @@ -403,6 +403,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -414,6 +415,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -423,6 +425,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/mutations/kubernetes_cluster.rs b/crates/alien-preflights/src/mutations/kubernetes_cluster.rs index 90e377121..a4a9c1510 100644 --- a/crates/alien-preflights/src/mutations/kubernetes_cluster.rs +++ b/crates/alien-preflights/src/mutations/kubernetes_cluster.rs @@ -74,6 +74,7 @@ impl StackMutation for KubernetesClusterMutation { lifecycle: ResourceLifecycle::Frozen, dependencies, remote_access: false, + enabled_when: None, }, ); @@ -198,6 +199,7 @@ mod tests { hash: "empty".to_string(), created_at: "1970-01-01T00:00:00Z".to_string(), }, + input_values: Default::default(), allow_frozen_changes: false, compute_backend: None, external_bindings: ExternalBindings::default(), diff --git a/crates/alien-preflights/src/mutations/management_permission_profile.rs b/crates/alien-preflights/src/mutations/management_permission_profile.rs index 8f2523556..03ff37b82 100644 --- a/crates/alien-preflights/src/mutations/management_permission_profile.rs +++ b/crates/alien-preflights/src/mutations/management_permission_profile.rs @@ -364,7 +364,18 @@ fn add_cloud_heartbeat_permission( } } -fn permission_resource_type(resource_type: &str) -> &str { +/// The `'*'`-scope grant suffixes this derivation emits per resource type +/// (the `format!("{}/…")` inserts above). A check exempting gate-derived +/// grants must recognize exactly this set — a suffix added there without +/// updating this list turns legitimate gate toggles into refused updates. +/// Data grants are never derived, so they are never in this list. +pub(crate) const GATE_DERIVED_GLOBAL_SUFFIXES: [&str; 4] = + ["provision", "management", "heartbeat", "telemetry"]; + +/// Maps a raw resource type to the namespace its permission-set ids use. +/// Every check that matches grant ids by `/` prefix must build the +/// prefix through this map, or the check and the grants silently diverge. +pub(crate) fn permission_resource_type(resource_type: &str) -> &str { match resource_type { "azure_resource_group" => "azure-resource-group", "azure_storage_account" => "azure-storage-account", @@ -463,6 +474,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -472,6 +484,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, // Should get nothing (heartbeat only) dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -883,6 +896,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -946,6 +960,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1014,6 +1029,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -1023,6 +1039,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1116,6 +1133,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -1125,6 +1143,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1181,6 +1200,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1240,6 +1260,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1307,6 +1328,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1381,6 +1403,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources @@ -1439,6 +1462,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1504,6 +1528,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1570,6 +1595,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/mutations/network.rs b/crates/alien-preflights/src/mutations/network.rs index 72b4bf9e9..b0f461e65 100644 --- a/crates/alien-preflights/src/mutations/network.rs +++ b/crates/alien-preflights/src/mutations/network.rs @@ -106,6 +106,7 @@ impl StackMutation for NetworkMutation { .build(); let network_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(network), lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), @@ -166,6 +167,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); stack @@ -302,6 +304,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/mutations/remote_stack_management.rs b/crates/alien-preflights/src/mutations/remote_stack_management.rs index 853aa396b..d0e318f89 100644 --- a/crates/alien-preflights/src/mutations/remote_stack_management.rs +++ b/crates/alien-preflights/src/mutations/remote_stack_management.rs @@ -87,6 +87,7 @@ impl StackMutation for RemoteStackManagementMutation { // Add it to the stack as a frozen resource (created once during setup) let remote_mgmt_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(remote_stack_management), lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), // No dependencies on other resources @@ -128,6 +129,7 @@ mod tests { hash: "empty".to_string(), created_at: "1970-01-01T00:00:00Z".to_string(), }, + input_values: Default::default(), allow_frozen_changes: false, compute_backend: None, external_bindings: ExternalBindings::default(), diff --git a/crates/alien-preflights/src/mutations/resource_link_permissions.rs b/crates/alien-preflights/src/mutations/resource_link_permissions.rs index 091e9b393..77760e9d3 100644 --- a/crates/alien-preflights/src/mutations/resource_link_permissions.rs +++ b/crates/alien-preflights/src/mutations/resource_link_permissions.rs @@ -203,6 +203,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -212,6 +213,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -221,6 +223,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); let mut profiles = IndexMap::new(); diff --git a/crates/alien-preflights/src/mutations/secrets_vault.rs b/crates/alien-preflights/src/mutations/secrets_vault.rs index 83a3ddd1d..5e5716437 100644 --- a/crates/alien-preflights/src/mutations/secrets_vault.rs +++ b/crates/alien-preflights/src/mutations/secrets_vault.rs @@ -25,6 +25,13 @@ use tracing::{debug, info}; /// 4. Add vault/data-read and vault/data-write to management profile for the secrets vault pub struct SecretsVaultMutation; +/// Resource id this mutation reserves for the deployment secrets vault. +/// +/// `ResourceEnabledValidCheck` reads it to reject `.enabled()` on this vault: +/// the links below are attached after every compile-time check has run, so no +/// check can see that gating it would strand its dependents. +pub const SECRETS_VAULT_ID: &str = "secrets"; + #[async_trait] impl StackMutation for SecretsVaultMutation { fn description(&self) -> &'static str { @@ -38,8 +45,8 @@ impl StackMutation for SecretsVaultMutation { config: &DeploymentConfig, ) -> bool { if stack_state.platform == Platform::Machines { - return stack.resources.contains_key("secrets") - || config.external_bindings.has("secrets"); + return stack.resources.contains_key(SECRETS_VAULT_ID) + || config.external_bindings.has(SECRETS_VAULT_ID); } // Always run to ensure required vault permissions are present @@ -55,12 +62,13 @@ impl StackMutation for SecretsVaultMutation { ) -> Result { info!("Adding deployment secrets vault and scoped runtime access"); - let secrets_vault_id = "secrets"; + let secrets_vault_id = SECRETS_VAULT_ID; // Step 1: Add vault resource if it doesn't already exist if !stack.resources.contains_key(secrets_vault_id) { let vault = Vault::new(secrets_vault_id.to_string()).build(); let vault_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(vault), lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), @@ -323,6 +331,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -338,6 +347,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, )]), permissions: PermissionsConfig { @@ -398,6 +408,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert("management".to_string(), remote_stack_management_entry()); @@ -544,6 +555,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -599,6 +611,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -657,6 +670,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -724,6 +738,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert( @@ -733,6 +748,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -816,6 +832,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert("management".to_string(), remote_stack_management_entry()); @@ -886,6 +903,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); resources.insert("management".to_string(), remote_stack_management_entry()); @@ -972,6 +990,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); @@ -1041,6 +1060,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-preflights/src/mutations/service_account.rs b/crates/alien-preflights/src/mutations/service_account.rs index 1d76191e3..eb7baec7a 100644 --- a/crates/alien-preflights/src/mutations/service_account.rs +++ b/crates/alien-preflights/src/mutations/service_account.rs @@ -94,6 +94,7 @@ impl StackMutation for ServiceAccountMutation { // Add as a frozen resource (ServiceAccounts are infrastructure) let resource_entry = ResourceEntry { + enabled_when: None, config: alien_core::Resource::new(service_account), lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), diff --git a/crates/alien-preflights/src/mutations/service_account_dependencies.rs b/crates/alien-preflights/src/mutations/service_account_dependencies.rs index 0ed1f1e4f..79f9533c4 100644 --- a/crates/alien-preflights/src/mutations/service_account_dependencies.rs +++ b/crates/alien-preflights/src/mutations/service_account_dependencies.rs @@ -248,6 +248,7 @@ mod tests { lifecycle: ResourceLifecycle::Frozen, dependencies: Vec::new(), remote_access: false, + enabled_when: None, }, ); diff --git a/crates/alien-terraform/src/emitter.rs b/crates/alien-terraform/src/emitter.rs index 75623635c..02f579218 100644 --- a/crates/alien-terraform/src/emitter.rs +++ b/crates/alien-terraform/src/emitter.rs @@ -85,9 +85,27 @@ pub trait TfEmitter: Send + Sync { /// references. fn emit_import_ref(&self, ctx: &EmitContext<'_>) -> Result; + /// Whether this emitter renders correctly when its resource is gated on a + /// deployer input via `.enabled()`. + /// + /// Opting in means the emitter puts `count` on its blocks, indexes its own + /// references, and nulls out its import ref when the gate is off. The + /// generator refuses to render a gated resource whose emitter has not, so a + /// half-converted emitter fails loudly instead of silently creating the + /// resource the deployer declined. + fn supports_enabled_when(&self) -> bool { + false + } + /// Apply-time expression that resolves to this resource's runtime binding /// payload. This is intentionally separate from [`Self::emit_import_ref`]: /// import data feeds the manager, while binding data feeds user code. + /// + /// A gated resource's own references need the same `[0]` indexing they get + /// in [`Self::emit_import_ref`]. `ResourceEnabledValidCheck` currently keeps + /// a gated resource from reaching here — a Worker cannot be gated, and an + /// ungated Worker linking a gated resource is rejected outright — so this is + /// only reachable if that rule relaxes. fn emit_binding_ref(&self, _ctx: &EmitContext<'_>) -> Result> { Ok(None) } diff --git a/crates/alien-terraform/src/emitters/aws/remote_stack_management.rs b/crates/alien-terraform/src/emitters/aws/remote_stack_management.rs index 0016fc674..267364cef 100644 --- a/crates/alien-terraform/src/emitters/aws/remote_stack_management.rs +++ b/crates/alien-terraform/src/emitters/aws/remote_stack_management.rs @@ -260,6 +260,7 @@ mod tests { lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), remote_access: false, + enabled_when: None, } } @@ -282,6 +283,7 @@ mod tests { #[test] fn aws_remote_management_resource_scope_does_not_inherit_management_name() { let entry = ResourceEntry { + enabled_when: None, config: Resource::new(Storage::new("uploads".to_string()).build()), lifecycle: ResourceLifecycle::Live, dependencies: Vec::new(), diff --git a/crates/alien-terraform/src/emitters/enabled.rs b/crates/alien-terraform/src/emitters/enabled.rs new file mode 100644 index 000000000..b2f730823 --- /dev/null +++ b/crates/alien-terraform/src/emitters/enabled.rs @@ -0,0 +1,190 @@ +//! Rendering for a resource whose creation follows a deployer input. +//! +//! `.enabled(input)` in the SDK means the deployer decides whether the resource +//! exists. Terraform learns that answer as a variable at apply time, not when we +//! render, so the decision has to live in the template: the resource block takes +//! a `count`, and anything the emitter publishes about the resource has to stay +//! renderable when that count is zero. +//! +//! Two things follow, and both are mandatory for a gated resource: +//! +//! - references to its own blocks need `[0]`, since a counted resource is a list +//! - it must drop out of the registration list entirely, because the manager +//! deserializes every entry there into typed import data with required fields + +use crate::{block::attr, expr}; +use alien_core::{ErrorData, Result}; +use alien_error::AlienError; +use hcl::{ + expr::{Conditional, Expression, FuncCall}, + structure::{Block, Body, Structure}, + Identifier, +}; + +/// Terraform variable carrying the gate's value. +/// +/// Mirrors `terraform_stack_input_variable_name`; the compile-time check +/// guarantees the input is a non-null boolean, so the expressions below never +/// need a null guard. +fn gate_variable(input_id: &str) -> String { + format!( + "var.{}", + crate::generator::stack_input_variable_name(input_id) + ) +} + +/// `count` for a gated resource block, or `None` when the resource is ungated +/// and should render exactly as it did before. Private so that [`gate`] stays +/// the only way a block acquires the gate, and its checks cannot be bypassed. +fn enabled_count(enabled_when: Option<&str>) -> Option { + enabled_when.map(|input_id| expr::raw(format!("{} ? 1 : 0", gate_variable(input_id)))) +} + +/// Put the resource's gate on a block that is already built. An ungated block +/// passes through byte-identical, so an existing stack re-renders without a diff. +/// +/// Every gated block goes through here, including the ones that come back from +/// the shared IAM emitters that ungated resources call too: the caller gates the +/// blocks it just appended instead of pushing the gate into a signature every +/// other call site would thread `None` through. +/// +/// Fails when the block already carries a `count`. Terraform allows only one, so +/// prepending a second would render invalid HCL, and silently keeping either one +/// would drop a meta-argument someone wrote on purpose. No emitter that opts into +/// `.enabled()` counts its own blocks today; this is here so the first one that +/// tries finds out at render time. +pub fn gate(block: &mut Block, enabled_when: Option<&str>) -> Result<()> { + let Some(count) = enabled_count(enabled_when) else { + return Ok(()); + }; + if block + .body + .attributes() + .any(|attribute| attribute.key.as_str() == "count") + { + let address = block + .labels + .iter() + .map(|label| label.as_str()) + .collect::>() + .join("."); + return Err(AlienError::new(ErrorData::OperationNotSupported { + operation: format!("enabled() on `{address}`"), + reason: "the block already declares its own `count`, and Terraform accepts only one \ + count per block" + .to_string(), + })); + } + let mut body: Vec = std::mem::take(&mut block.body).into_iter().collect(); + body.insert(0, attr("count", count)); + block.body = Body::from(body); + Ok(()) +} + +/// Reference to an attribute of a resource that may be gated, indexing into the +/// count when it is. +pub fn attribute( + enabled_when: Option<&str>, + resource_type: &str, + label: &str, + attribute: &str, +) -> Expression { + match enabled_when { + Some(_) => expr::traversal_indexed(resource_type, label, attribute), + None => expr::traversal([resource_type, label, attribute]), + } +} + +/// The registration list the manager consumes, one entry per resource. +/// +/// A resource the deployer declined contributes no entry at all. It does not +/// exist, so there is nothing to describe, and a null placeholder would not +/// survive the manager's typed deserialization of every entry. Gated entries +/// therefore render as single-element lists that collapse to empty, spliced +/// together with `concat`. +/// +/// A stack with nothing gated renders a plain array, byte-identical to what +/// an existing stack carries, so a re-apply shows no diff. +pub fn registration_list(entries: Vec<(Option, Expression)>) -> Expression { + if entries.iter().all(|(gate, _)| gate.is_none()) { + return Expression::Array(entries.into_iter().map(|(_, entry)| entry).collect()); + } + + let mut concat = FuncCall::builder(Identifier::sanitized("concat")); + for (gate, entry) in entries { + let single = Expression::Array(vec![entry]); + concat = concat.arg(match gate { + Some(input_id) => Expression::Conditional(Box::new(Conditional::new( + expr::raw(gate_variable(&input_id)), + single, + Expression::Array(Vec::new()), + ))), + None => single, + }); + } + Expression::FuncCall(Box::new(concat.build())) +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::block::resource_block; + + /// No emitter counts its own blocks today, so this is the only place the + /// collision path runs. Without it the guard would ship unexecuted. + #[test] + fn gating_a_block_that_already_counts_itself_fails() { + let mut block = resource_block( + "aws_s3_bucket", + "already_counted", + [attr("count", Expression::Number(hcl::Number::from(2)))], + ); + + let error = gate(&mut block, Some("bucketEnabled")) + .expect_err("a second count would render invalid HCL"); + + assert_eq!(error.code, "OPERATION_NOT_SUPPORTED"); + assert!( + error.message.contains("aws_s3_bucket.already_counted"), + "the error should name the offending block: {}", + error.message + ); + assert!( + error.message.contains("count"), + "the error should say which meta-argument collided: {}", + error.message + ); + } + + #[test] + fn gating_an_ungated_block_leaves_it_alone() { + let mut block = resource_block("aws_s3_bucket", "plain", [attr("bucket", "x".into())]); + let before = block.clone(); + + gate(&mut block, None).expect("an ungated block is never rewritten"); + + assert_eq!(block, before); + } +} + +/// [`gate`] reading the resource's own gate off the emit context, so an +/// emitter's own blocks structurally cannot miss it. The `Option<&str>` form +/// stays for callers gating blocks on a *different* resource's gate. +pub fn gate_own(ctx: &alien_core::import::EmitContext<'_>, block: &mut Block) -> Result<()> { + gate(block, ctx.resource.enabled_when.as_deref()) +} + +/// [`attribute`] reading the resource's own gate off the emit context. +pub fn self_attribute( + ctx: &alien_core::import::EmitContext<'_>, + resource_type: &str, + label: &str, + attr_name: &str, +) -> Expression { + attribute( + ctx.resource.enabled_when.as_deref(), + resource_type, + label, + attr_name, + ) +} diff --git a/crates/alien-terraform/src/emitters/mod.rs b/crates/alien-terraform/src/emitters/mod.rs index be42c5d81..6c8b42633 100644 --- a/crates/alien-terraform/src/emitters/mod.rs +++ b/crates/alien-terraform/src/emitters/mod.rs @@ -9,6 +9,7 @@ pub mod aws; pub mod azure; +pub mod enabled; pub mod gcp; pub mod kubernetes_cluster; pub mod worker_environment; diff --git a/crates/alien-terraform/src/expr.rs b/crates/alien-terraform/src/expr.rs index 665b30c68..427fd5aa2 100644 --- a/crates/alien-terraform/src/expr.rs +++ b/crates/alien-terraform/src/expr.rs @@ -63,6 +63,20 @@ where })) } +/// Like [`traversal`], but indexes into the second segment: `root.label[0].attr`. +/// Terraform renders a resource carrying `count` as a list, and a gate yields at +/// most one instance, so the index is always zero. +pub fn traversal_indexed(root: &str, label: &str, attribute: &str) -> Expression { + Expression::Traversal(Box::new(Traversal { + expr: Expression::Variable(Identifier::sanitized(root).into()), + operators: vec![ + TraversalOperator::GetAttr(Identifier::sanitized(label)), + TraversalOperator::Index(Expression::Number(hcl::Number::from(0))), + TraversalOperator::GetAttr(Identifier::sanitized(attribute)), + ], + })) +} + /// Build an HCL object literal from `(key, value)` pairs. Identifier-shaped /// keys become unquoted; everything else becomes a quoted string key. pub fn object(pairs: I) -> Expression diff --git a/crates/alien-terraform/src/generator.rs b/crates/alien-terraform/src/generator.rs index 12711d6be..3d8ff6eab 100644 --- a/crates/alien-terraform/src/generator.rs +++ b/crates/alien-terraform/src/generator.rs @@ -194,7 +194,9 @@ pub fn generate_terraform_module( validate_stack_inputs_for_terraform(&stack_inputs)?; let mut per_resource: IndexMap = IndexMap::new(); - let mut registration_resources: Vec = Vec::new(); + // Each entry carries the gate it is conditional on, so `locals_body` can + // drop declined resources from the registration list. + let mut registration_resources: Vec<(Option, Expression)> = Vec::new(); let mut shared_locals: IndexMap = IndexMap::new(); for (resource_id, resource) in stack.resources() { @@ -214,6 +216,37 @@ pub fn generate_terraform_module( names: &labels, }; + if let Some(input_id) = resource.enabled_when.as_deref() { + if !emitter.supports_enabled_when() { + return Err(AlienError::new(ErrorData::OperationNotSupported { + operation: format!("enabled() on resource type '{resource_type}'"), + reason: format!( + "the {platform:?} Terraform emitter for '{resource_type}' does not render \ + conditionally yet, so resource '{resource_id}' would be created regardless \ + of the deployer's answer" + ), + })); + } + // Re-validated at render time like the CloudFormation generator: + // a caller that renders without running preflights must fail here, + // not ship a module whose `var.input_x` is undeclared or a string. + alien_core::find_boolean_gate_input(&stack_inputs, input_id).map_err(|issue| { + AlienError::new(ErrorData::OperationNotSupported { + operation: format!("enabled('{input_id}')"), + reason: match issue { + alien_core::GateInputIssue::Undeclared => format!( + "resource '{resource_id}' is gated on stack input '{input_id}', \ + which this module never asks the deployer for" + ), + alien_core::GateInputIssue::NotBoolean(kind) => format!( + "resource '{resource_id}' is gated on stack input '{input_id}', \ + which is a {kind:?} input rather than a boolean" + ), + }, + }) + })?; + } + let mut fragment = emitter.emit_with_registry(&ctx, options.registry)?; // Split per-emitter `locals` out of the per-resource file \u2014 they // belong in `locals.tf` so reviewers see all locals together. @@ -222,11 +255,14 @@ pub fn generate_terraform_module( per_resource.insert(resource_id.clone(), fragment); let registration_data = emitter.emit_import_ref(&ctx)?; - registration_resources.push(expr::object([ - ("id", Expression::String(resource_id.to_string())), - ("type", Expression::String(resource_type.to_string())), - ("importData", registration_data), - ])); + registration_resources.push(( + resource.enabled_when.clone(), + expr::object([ + ("id", Expression::String(resource_id.to_string())), + ("type", Expression::String(resource_type.to_string())), + ("importData", registration_data), + ]), + )); } if target.is_kubernetes() { @@ -843,7 +879,13 @@ fn validate_stack_inputs_for_terraform(inputs: &[StackInputDefinition]) -> Resul } fn terraform_stack_input_variable_name(input: &StackInputDefinition) -> String { - format!("input_{}", snake_case_identifier(&input.id)) + stack_input_variable_name(&input.id) +} + +/// Variable name for a stack input id. Shared with the gating helpers, which +/// only know the id. +pub(crate) fn stack_input_variable_name(input_id: &str) -> String { + format!("input_{}", snake_case_identifier(input_id)) } fn snake_case_identifier(value: &str) -> String { @@ -1937,7 +1979,7 @@ fn resource_prefix_body() -> Body { fn locals_body( target: TerraformTarget, stack_settings: &StackSettings, - registration_resources: Vec, + registration_resources: Vec<(Option, Expression)>, extra: &IndexMap, has_remote_management: bool, ) -> Result { @@ -2030,7 +2072,7 @@ fn locals_body( )); body.push(attr( "deployment_resources", - Expression::Array(registration_resources), + crate::emitters::enabled::registration_list(registration_resources), )); if target.is_kubernetes() { diff --git a/crates/alien-test/src/distribution.rs b/crates/alien-test/src/distribution.rs index 0bfc36aa5..4ef534daa 100644 --- a/crates/alien-test/src/distribution.rs +++ b/crates/alien-test/src/distribution.rs @@ -1030,6 +1030,7 @@ async fn apply_render_mutations_with_management_config( let stack_state = StackState::new(platform); let config = DeploymentConfig { + input_values: Default::default(), deployment_name: Some(stack.id().to_string()), stack_settings: stack_settings.clone(), management_config, @@ -1915,6 +1916,7 @@ async fn terraform_kubernetes_stack_for_target( let stack_state = StackState::new(Platform::Kubernetes); let config = DeploymentConfig { + input_values: Default::default(), deployment_name: Some(stack.id().to_string()), stack_settings: stack_settings.clone(), management_config: render_management_config(target.cloud_platform(), &stack_settings), diff --git a/packages/core/src/__tests__/stack.test.ts b/packages/core/src/__tests__/stack.test.ts index fe923fefa..6eae851e2 100644 --- a/packages/core/src/__tests__/stack.test.ts +++ b/packages/core/src/__tests__/stack.test.ts @@ -412,6 +412,87 @@ describe("Stack builder validation", () => { }) }) +describe("Resource enablement", () => { + const stackInputs = alien.inputs({ + storeEnabled: alien.boolean({ + providedBy: "deployer", + required: true, + label: "Enable the store", + description: "Whether the deployment provisions the key-value store.", + }), + queueEnabled: alien.boolean({ + providedBy: "deployer", + required: true, + label: "Enable the queue", + description: "Whether the deployment provisions the work queue.", + }), + }) + + it("lifts the gate from the resource onto the stack entry", () => { + const store = new alien.Kv("store").enabled(stackInputs.storeEnabled).build() + + const stack = new alien.Stack("gated-stack").inputs(stackInputs).add(store, "frozen").build() + + // Read back through StackSchema.parse, so this also proves the generated + // schema carries enabledWhen rather than silently stripping it. + const entry = stack.resources.store + expect(entry).toBeDefined() + expect(entry!.enabledWhen).toBe("storeEnabled") + }) + + it("gates resources from different builders independently", () => { + const store = new alien.Kv("store").enabled(stackInputs.storeEnabled).build() + const queue = new alien.Queue("jobs").enabled(stackInputs.queueEnabled).build() + const bucket = new alien.Storage("assets").build() + + const stack = new alien.Stack("multi-gate-stack") + .inputs(stackInputs) + .add(store, "frozen") + .add(queue, "frozen") + .add(bucket, "frozen") + .build() + + expect(stack.resources.store?.enabledWhen).toBe("storeEnabled") + expect(stack.resources.jobs?.enabledWhen).toBe("queueEnabled") + expect(stack.resources.assets?.enabledWhen).toBeUndefined() + }) + + it("does not let the gate leak into resource configuration", () => { + // Enablement is stack membership, not configuration: an enabled stack must + // serialize exactly like one that never used .enabled(). + const gated = new alien.Kv("store").enabled(stackInputs.storeEnabled).build() + const ungated = new alien.Kv("store").build() + + expect(gated.config).toStrictEqual(ungated.config) + + const gatedStack = new alien.Stack("gated-stack") + .inputs(stackInputs) + .add(gated, "frozen") + .build() + const ungatedStack = new alien.Stack("gated-stack") + .inputs(stackInputs) + .add(ungated, "frozen") + .build() + + expect(gatedStack.resources.store?.config).toStrictEqual(ungatedStack.resources.store?.config) + }) + + it("leaves an ungated resource without an enabledWhen key at all", () => { + const ungated = new alien.Kv("store").build() + + // A defined-but-undefined field would materialise the key on every resource + // and change the serialized form of every existing stack. + expect(Object.keys(ungated)).toEqual(["config"]) + expect("enabledWhen" in ungated).toBe(false) + + const stack = new alien.Stack("ungated-stack").add(ungated, "frozen").build() + + const entry = stack.resources.store + expect(entry).toBeDefined() + expect("enabledWhen" in entry!).toBe(false) + }) +}) + describe("Permissions system", () => { it("creates a stack with custom permission sets", () => { // Create a custom permission set @@ -633,3 +714,36 @@ describe("Experimental AwsOpenSearch resource configuration", () => { ).toThrow() }) }) + +describe("which builders offer .enabled()", () => { + // Only customer-facing data resources are gateable. Framework infra (build, + // registry, service accounts, clusters) and live-only compute must not offer + // it: a gate there is either always wrong or can only fail later, and + // ServiceAccountMutation would silently overwrite a gated "{profile}-sa" entry, + // erasing the gate before any guard. + it("customer-facing data resources have it", () => { + for (const b of [ + new alien.Kv("a"), + new alien.Storage("a"), + new alien.Queue("a"), + new alien.Vault("a"), + new alien.Postgres("a"), + ]) { + expect(typeof (b as { enabled?: unknown }).enabled).toBe("function") + } + }) + + it("framework-derived, live-only compute, and unconverted types do not", () => { + for (const b of [ + new alien.Build("a"), + new alien.ServiceAccount("a"), + new alien.ComputeCluster("a"), + new alien.Worker("a"), + new alien.Container("a"), + new alien.Email("a"), + new alien.experimental.AwsOpenSearch("a"), + ]) { + expect((b as { enabled?: unknown }).enabled).toBeUndefined() + } + }) +}) diff --git a/packages/core/src/generated/schemas/resourceEntry.json b/packages/core/src/generated/schemas/resourceEntry.json index 0fb839a7f..776c763e5 100644 --- a/packages/core/src/generated/schemas/resourceEntry.json +++ b/packages/core/src/generated/schemas/resourceEntry.json @@ -1 +1 @@ -{"type":"object","required":["config","lifecycle","dependencies"],"properties":{"config":{"description":"Resource configuration (can be any type of resource)","type":"object","required":["type","id"],"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.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"additionalProperties":true,"x-readme-ref-name":"BaseResource"},"dependencies":{"type":"array","items":{"type":"object","description":"Reference to a resource by its stable id and resource type.","required":["type","id"],"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.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"x-readme-ref-name":"ResourceRef"},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"description":"Lifecycle management configuration for this resource","type":"string","enum":["frozen","live"],"x-readme-ref-name":"ResourceLifecycle"},"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)."}},"x-readme-ref-name":"ResourceEntry"} \ No newline at end of file +{"type":"object","required":["config","lifecycle","dependencies"],"properties":{"config":{"description":"Resource configuration (can be any type of resource)","type":"object","required":["type","id"],"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.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"additionalProperties":true,"x-readme-ref-name":"BaseResource"},"dependencies":{"type":"array","items":{"type":"object","description":"Reference to a resource by its stable id and resource type.","required":["type","id"],"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.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"x-readme-ref-name":"ResourceRef"},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":["string","null"],"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"lifecycle":{"description":"Lifecycle management configuration for this resource","type":"string","enum":["frozen","live"],"x-readme-ref-name":"ResourceLifecycle"},"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)."}},"x-readme-ref-name":"ResourceEntry"} \ No newline at end of file diff --git a/packages/core/src/generated/schemas/stack.json b/packages/core/src/generated/schemas/stack.json index 35e86352c..0e70ceef0 100644 --- a/packages/core/src/generated/schemas/stack.json +++ b/packages/core/src/generated/schemas/stack.json @@ -1 +1 @@ -{"type":"object","description":"A bag of resources, unaware of any cloud.","required":["id","resources"],"properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","description":"Stack input definition serialized into a release stack.","required":["id","kind","providedBy","required","label","description"],"properties":{"default":{"oneOf":[{"type":"null"},{"description":"Default value for optional/plain inputs.","oneOf":[{"type":"object","description":"String default.","required":["value","type"],"properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}}},{"type":"object","description":"Number default.","required":["value","type"],"properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}}},{"type":"object","description":"Boolean default.","required":["value","type"],"properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}}},{"type":"object","description":"String list default.","required":["value","type"],"properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}}}],"x-readme-ref-name":"StackInputDefaultValue"}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","description":"How a resolved stack input is injected into runtime environment variables.","required":["name"],"properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":["array","null"],"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"null"},{"description":"Whether this env var is plain or secret. Defaults from the input kind.","type":"string","enum":["plain","secret"],"x-readme-ref-name":"StackInputEnvironmentVariableType"}]}},"x-readme-ref-name":"StackInputEnvironmentMapping"},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"description":"Input primitive kind.","type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"x-readme-ref-name":"StackInputKind"},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":["string","null"],"description":"Example placeholder shown in UI."},"platforms":{"type":["array","null"],"items":{"type":"string","description":"Represents the target cloud platform.","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"x-readme-ref-name":"Platform"},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","description":"Who can provide a stack input value.","enum":["developer","deployer"],"x-readme-ref-name":"StackInputProvider"},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"null"},{"description":"Portable validation constraints.","type":"object","properties":{"format":{"type":["string","null"],"description":"Semantic format hint such as url."},"max":{"type":["string","null"],"description":"Maximum number."},"maxItems":{"type":["integer","null"],"format":"int32","description":"Maximum string-list items.","minimum":0},"maxLength":{"type":["integer","null"],"format":"int32","description":"Maximum string length.","minimum":0},"min":{"type":["string","null"],"description":"Minimum number."},"minItems":{"type":["integer","null"],"format":"int32","description":"Minimum string-list items.","minimum":0},"minLength":{"type":["integer","null"],"format":"int32","description":"Minimum string length.","minimum":0},"pattern":{"type":["string","null"],"description":"Portable whole-value regex pattern."},"values":{"type":["array","null"],"items":{"type":"string"},"description":"Allowed string enum values."}},"x-readme-ref-name":"StackInputValidation"}]}},"x-readme-ref-name":"StackInputDefinition"},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"description":"Combined permissions configuration containing both profiles and management","type":"object","required":["profiles"],"properties":{"management":{"description":"Management permissions configuration for stack management access","oneOf":[{"type":"string","description":"Auto-derived permissions only (default)\nUses resource lifecycles to determine management permissions:\n- Frozen resources: `/management`\n- Live resources: `/provision`","enum":["auto"]},{"type":"object","description":"Add permissions to auto-derived baseline","required":["extend"],"properties":{"extend":{"description":"Add permissions to auto-derived baseline","type":"object","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"string","description":"Reference to a built-in permission set by name (e.g., \"storage/data-read\")"},{"description":"Inline permission set definition","type":"object","required":["id","description","platforms"],"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":{"description":"Platform-specific permission configurations","type":"object","properties":{"aws":{"type":["array","null"],"items":{"type":"object","description":"AWS-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false},"stack":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AwsBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"effect":{"description":"IAM effect. Defaults to Allow.","type":"string","enum":["Allow","Deny"],"x-readme-ref-name":"AwsPermissionEffect"},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AwsPlatformPermission"},"description":"AWS permission configurations"},"azure":{"type":["array","null"],"items":{"type":"object","description":"Azure-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AzureBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AzurePlatformPermission"},"description":"Azure permission configurations"},"gcp":{"type":["array","null"],"items":{"type":"object","description":"GCP-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_GcpBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"GcpPlatformPermission"},"description":"GCP permission configurations"}},"additionalProperties":false,"x-readme-ref-name":"PlatformPermissions"}},"additionalProperties":false,"x-readme-ref-name":"PermissionSet"}],"description":"Reference to a permission set - either by name or inline definition","x-readme-ref-name":"PermissionSetReference"}},"propertyNames":{"type":"string"},"x-readme-ref-name":"PermissionProfile"}}},{"type":"object","description":"Replace auto-derived permissions entirely","required":["override"],"properties":{"override":{"description":"Replace auto-derived permissions entirely","type":"object","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"string","description":"Reference to a built-in permission set by name (e.g., \"storage/data-read\")"},{"description":"Inline permission set definition","type":"object","required":["id","description","platforms"],"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":{"description":"Platform-specific permission configurations","type":"object","properties":{"aws":{"type":["array","null"],"items":{"type":"object","description":"AWS-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false},"stack":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AwsBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"effect":{"description":"IAM effect. Defaults to Allow.","type":"string","enum":["Allow","Deny"],"x-readme-ref-name":"AwsPermissionEffect"},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AwsPlatformPermission"},"description":"AWS permission configurations"},"azure":{"type":["array","null"],"items":{"type":"object","description":"Azure-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AzureBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AzurePlatformPermission"},"description":"Azure permission configurations"},"gcp":{"type":["array","null"],"items":{"type":"object","description":"GCP-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_GcpBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"GcpPlatformPermission"},"description":"GCP permission configurations"}},"additionalProperties":false,"x-readme-ref-name":"PlatformPermissions"}},"additionalProperties":false,"x-readme-ref-name":"PermissionSet"}],"description":"Reference to a permission set - either by name or inline definition","x-readme-ref-name":"PermissionSetReference"}},"propertyNames":{"type":"string"},"x-readme-ref-name":"PermissionProfile"}}}],"x-readme-ref-name":"ManagementPermissions"},"profiles":{"type":"object","description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration","additionalProperties":{"type":"object","description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"string","description":"Reference to a built-in permission set by name (e.g., \"storage/data-read\")"},{"description":"Inline permission set definition","type":"object","required":["id","description","platforms"],"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":{"description":"Platform-specific permission configurations","type":"object","properties":{"aws":{"type":["array","null"],"items":{"type":"object","description":"AWS-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false},"stack":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AwsBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"effect":{"description":"IAM effect. Defaults to Allow.","type":"string","enum":["Allow","Deny"],"x-readme-ref-name":"AwsPermissionEffect"},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AwsPlatformPermission"},"description":"AWS permission configurations"},"azure":{"type":["array","null"],"items":{"type":"object","description":"Azure-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AzureBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AzurePlatformPermission"},"description":"Azure permission configurations"},"gcp":{"type":["array","null"],"items":{"type":"object","description":"GCP-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_GcpBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"GcpPlatformPermission"},"description":"GCP permission configurations"}},"additionalProperties":false,"x-readme-ref-name":"PlatformPermissions"}},"additionalProperties":false,"x-readme-ref-name":"PermissionSet"}],"description":"Reference to a permission set - either by name or inline definition","x-readme-ref-name":"PermissionSetReference"}},"propertyNames":{"type":"string"},"x-readme-ref-name":"PermissionProfile"},"propertyNames":{"type":"string"}}},"additionalProperties":false,"x-readme-ref-name":"PermissionsConfig"},"resources":{"type":"object","description":"Map of resource IDs to their configurations and lifecycle settings","additionalProperties":{"type":"object","required":["config","lifecycle","dependencies"],"properties":{"config":{"description":"Resource configuration (can be any type of resource)","type":"object","required":["type","id"],"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.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"additionalProperties":true,"x-readme-ref-name":"BaseResource"},"dependencies":{"type":"array","items":{"type":"object","description":"Reference to a resource by its stable id and resource type.","required":["type","id"],"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.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"x-readme-ref-name":"ResourceRef"},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"lifecycle":{"description":"Lifecycle management configuration for this resource","type":"string","enum":["frozen","live"],"x-readme-ref-name":"ResourceLifecycle"},"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)."}},"x-readme-ref-name":"ResourceEntry"},"propertyNames":{"type":"string"}},"supportedPlatforms":{"type":["array","null"],"items":{"type":"string","description":"Represents the target cloud platform.","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"x-readme-ref-name":"Platform"},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"x-readme-ref-name":"Stack"} \ No newline at end of file +{"type":"object","description":"A bag of resources, unaware of any cloud.","required":["id","resources"],"properties":{"id":{"type":"string","description":"Unique identifier for the stack"},"inputs":{"type":"array","items":{"type":"object","description":"Stack input definition serialized into a release stack.","required":["id","kind","providedBy","required","label","description"],"properties":{"default":{"oneOf":[{"type":"null"},{"description":"Default value for optional/plain inputs.","oneOf":[{"type":"object","description":"String default.","required":["value","type"],"properties":{"type":{"type":"string","enum":["string"]},"value":{"type":"string","description":"String default."}}},{"type":"object","description":"Number default.","required":["value","type"],"properties":{"type":{"type":"string","enum":["number"]},"value":{"type":"string","description":"Number default."}}},{"type":"object","description":"Boolean default.","required":["value","type"],"properties":{"type":{"type":"string","enum":["boolean"]},"value":{"type":"boolean","description":"Boolean default."}}},{"type":"object","description":"String list default.","required":["value","type"],"properties":{"type":{"type":"string","enum":["stringList"]},"value":{"type":"array","items":{"type":"string"},"description":"String list default."}}}],"x-readme-ref-name":"StackInputDefaultValue"}]},"description":{"type":"string","description":"Human-facing helper text."},"env":{"type":"array","items":{"type":"object","description":"How a resolved stack input is injected into runtime environment variables.","required":["name"],"properties":{"name":{"type":"string","description":"Environment variable name."},"targetResources":{"type":["array","null"],"items":{"type":"string"},"description":"Target resource IDs or patterns. None means every env-capable resource."},"type":{"oneOf":[{"type":"null"},{"description":"Whether this env var is plain or secret. Defaults from the input kind.","type":"string","enum":["plain","secret"],"x-readme-ref-name":"StackInputEnvironmentVariableType"}]}},"x-readme-ref-name":"StackInputEnvironmentMapping"},"description":"Runtime env-var mappings for v1 input resolution."},"id":{"type":"string","description":"Stable input ID used by CLI/API calls."},"kind":{"description":"Input primitive kind.","type":"string","enum":["string","secret","number","integer","boolean","enum","stringList"],"x-readme-ref-name":"StackInputKind"},"label":{"type":"string","description":"Human-facing field label."},"placeholder":{"type":["string","null"],"description":"Example placeholder shown in UI."},"platforms":{"type":["array","null"],"items":{"type":"string","description":"Represents the target cloud platform.","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"x-readme-ref-name":"Platform"},"description":"Platforms where this input applies."},"providedBy":{"type":"array","items":{"type":"string","description":"Who can provide a stack input value.","enum":["developer","deployer"],"x-readme-ref-name":"StackInputProvider"},"description":"Who can provide this value."},"required":{"type":"boolean","description":"Whether a resolved value is required before deployment can proceed."},"validation":{"oneOf":[{"type":"null"},{"description":"Portable validation constraints.","type":"object","properties":{"format":{"type":["string","null"],"description":"Semantic format hint such as url."},"max":{"type":["string","null"],"description":"Maximum number."},"maxItems":{"type":["integer","null"],"format":"int32","description":"Maximum string-list items.","minimum":0},"maxLength":{"type":["integer","null"],"format":"int32","description":"Maximum string length.","minimum":0},"min":{"type":["string","null"],"description":"Minimum number."},"minItems":{"type":["integer","null"],"format":"int32","description":"Minimum string-list items.","minimum":0},"minLength":{"type":["integer","null"],"format":"int32","description":"Minimum string length.","minimum":0},"pattern":{"type":["string","null"],"description":"Portable whole-value regex pattern."},"values":{"type":["array","null"],"items":{"type":"string"},"description":"Allowed string enum values."}},"x-readme-ref-name":"StackInputValidation"}]}},"x-readme-ref-name":"StackInputDefinition"},"description":"Input definitions required before setup or deployment can proceed."},"permissions":{"description":"Combined permissions configuration containing both profiles and management","type":"object","required":["profiles"],"properties":{"management":{"description":"Management permissions configuration for stack management access","oneOf":[{"type":"string","description":"Auto-derived permissions only (default)\nUses resource lifecycles to determine management permissions:\n- Frozen resources: `/management`\n- Live resources: `/provision`","enum":["auto"]},{"type":"object","description":"Add permissions to auto-derived baseline","required":["extend"],"properties":{"extend":{"description":"Add permissions to auto-derived baseline","type":"object","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"string","description":"Reference to a built-in permission set by name (e.g., \"storage/data-read\")"},{"description":"Inline permission set definition","type":"object","required":["id","description","platforms"],"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":{"description":"Platform-specific permission configurations","type":"object","properties":{"aws":{"type":["array","null"],"items":{"type":"object","description":"AWS-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false},"stack":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AwsBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"effect":{"description":"IAM effect. Defaults to Allow.","type":"string","enum":["Allow","Deny"],"x-readme-ref-name":"AwsPermissionEffect"},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AwsPlatformPermission"},"description":"AWS permission configurations"},"azure":{"type":["array","null"],"items":{"type":"object","description":"Azure-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AzureBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AzurePlatformPermission"},"description":"Azure permission configurations"},"gcp":{"type":["array","null"],"items":{"type":"object","description":"GCP-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_GcpBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"GcpPlatformPermission"},"description":"GCP permission configurations"}},"additionalProperties":false,"x-readme-ref-name":"PlatformPermissions"}},"additionalProperties":false,"x-readme-ref-name":"PermissionSet"}],"description":"Reference to a permission set - either by name or inline definition","x-readme-ref-name":"PermissionSetReference"}},"propertyNames":{"type":"string"},"x-readme-ref-name":"PermissionProfile"}}},{"type":"object","description":"Replace auto-derived permissions entirely","required":["override"],"properties":{"override":{"description":"Replace auto-derived permissions entirely","type":"object","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"string","description":"Reference to a built-in permission set by name (e.g., \"storage/data-read\")"},{"description":"Inline permission set definition","type":"object","required":["id","description","platforms"],"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":{"description":"Platform-specific permission configurations","type":"object","properties":{"aws":{"type":["array","null"],"items":{"type":"object","description":"AWS-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false},"stack":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AwsBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"effect":{"description":"IAM effect. Defaults to Allow.","type":"string","enum":["Allow","Deny"],"x-readme-ref-name":"AwsPermissionEffect"},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AwsPlatformPermission"},"description":"AWS permission configurations"},"azure":{"type":["array","null"],"items":{"type":"object","description":"Azure-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AzureBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AzurePlatformPermission"},"description":"Azure permission configurations"},"gcp":{"type":["array","null"],"items":{"type":"object","description":"GCP-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_GcpBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"GcpPlatformPermission"},"description":"GCP permission configurations"}},"additionalProperties":false,"x-readme-ref-name":"PlatformPermissions"}},"additionalProperties":false,"x-readme-ref-name":"PermissionSet"}],"description":"Reference to a permission set - either by name or inline definition","x-readme-ref-name":"PermissionSetReference"}},"propertyNames":{"type":"string"},"x-readme-ref-name":"PermissionProfile"}}}],"x-readme-ref-name":"ManagementPermissions"},"profiles":{"type":"object","description":"Permission profiles that define access control for compute services\nKey is the profile name, value is the permission configuration","additionalProperties":{"type":"object","description":"Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"string","description":"Reference to a built-in permission set by name (e.g., \"storage/data-read\")"},{"description":"Inline permission set definition","type":"object","required":["id","description","platforms"],"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":{"description":"Platform-specific permission configurations","type":"object","properties":{"aws":{"type":["array","null"],"items":{"type":"object","description":"AWS-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false},"stack":{"type":"object","description":"AWS-specific binding specification","required":["resources"],"properties":{"condition":{"type":["object","null"],"description":"Optional condition for additional filtering (rare)","additionalProperties":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"propertyNames":{"type":"string"}},"resources":{"type":"array","items":{"type":"string"},"description":"Resource ARNs to bind to"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AwsBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"effect":{"description":"IAM effect. Defaults to Allow.","type":"string","enum":["Allow","Deny"],"x-readme-ref-name":"AwsPermissionEffect"},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AwsPlatformPermission"},"description":"AWS permission configurations"},"azure":{"type":["array","null"],"items":{"type":"object","description":"Azure-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"Azure-specific binding specification","required":["scope"],"properties":{"scope":{"type":"string","description":"Scope (subscription/resource group/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_AzureBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"AzurePlatformPermission"},"description":"Azure permission configurations"},"gcp":{"type":["array","null"],"items":{"type":"object","description":"GCP-specific platform permission configuration","required":["grant","binding"],"properties":{"binding":{"description":"How to bind the permissions (stack vs resource scope)","type":"object","properties":{"resource":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false},"stack":{"type":"object","description":"GCP-specific binding specification","required":["scope"],"properties":{"condition":{"oneOf":[{"type":"null"},{"description":"Optional condition for filtering resources","type":"object","required":["title","expression"],"properties":{"expression":{"type":"string"},"title":{"type":"string"}},"additionalProperties":false,"x-readme-ref-name":"GcpCondition"}]},"scope":{"type":"string","description":"Scope (project/resource level)"}},"additionalProperties":false}},"additionalProperties":false,"x-readme-ref-name":"BindingConfiguration_GcpBindingSpec"},"description":{"type":["string","null"],"description":"Short admin-facing description of why this entry exists."},"grant":{"description":"What permissions to grant","type":"object","properties":{"actions":{"type":["array","null"],"items":{"type":"string"},"description":"AWS IAM actions (only for AWS)"},"dataActions":{"type":["array","null"],"items":{"type":"string"},"description":"Azure actions (only for Azure)"},"permissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP permissions that require an exact residual custom role."},"predefinedRoles":{"type":["array","null"],"items":{"type":"string"},"description":"Provider predefined roles to bind directly."},"residualPermissions":{"type":["array","null"],"items":{"type":"string"},"description":"GCP residual custom permissions to pair with predefined roles."}},"additionalProperties":false,"x-readme-ref-name":"PermissionGrant"},"label":{"type":["string","null"],"description":"Stable admin-facing label for this permission entry."}},"additionalProperties":false,"x-readme-ref-name":"GcpPlatformPermission"},"description":"GCP permission configurations"}},"additionalProperties":false,"x-readme-ref-name":"PlatformPermissions"}},"additionalProperties":false,"x-readme-ref-name":"PermissionSet"}],"description":"Reference to a permission set - either by name or inline definition","x-readme-ref-name":"PermissionSetReference"}},"propertyNames":{"type":"string"},"x-readme-ref-name":"PermissionProfile"},"propertyNames":{"type":"string"}}},"additionalProperties":false,"x-readme-ref-name":"PermissionsConfig"},"resources":{"type":"object","description":"Map of resource IDs to their configurations and lifecycle settings","additionalProperties":{"type":"object","required":["config","lifecycle","dependencies"],"properties":{"config":{"description":"Resource configuration (can be any type of resource)","type":"object","required":["type","id"],"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.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"additionalProperties":true,"x-readme-ref-name":"BaseResource"},"dependencies":{"type":"array","items":{"type":"object","description":"Reference to a resource by its stable id and resource type.","required":["type","id"],"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.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"x-readme-ref-name":"ResourceRef"},"description":"Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list"},"enabledWhen":{"type":["string","null"],"description":"Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it."},"lifecycle":{"description":"Lifecycle management configuration for this resource","type":"string","enum":["frozen","live"],"x-readme-ref-name":"ResourceLifecycle"},"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)."}},"x-readme-ref-name":"ResourceEntry"},"propertyNames":{"type":"string"}},"supportedPlatforms":{"type":["array","null"],"items":{"type":"string","description":"Represents the target cloud platform.","enum":["aws","gcp","azure","kubernetes","machines","local","test"],"x-readme-ref-name":"Platform"},"description":"Which platforms this stack supports. When None, all platforms are supported."}},"x-readme-ref-name":"Stack"} \ No newline at end of file diff --git a/packages/core/src/generated/zod/resource-entry-schema.ts b/packages/core/src/generated/zod/resource-entry-schema.ts index dfd7f05cc..d0c5fced9 100644 --- a/packages/core/src/generated/zod/resource-entry-schema.ts +++ b/packages/core/src/generated/zod/resource-entry-schema.ts @@ -15,6 +15,7 @@ export const ResourceEntrySchema = z.object({ get "dependencies"(){ return z.array(ResourceRefSchema.describe("Reference to a resource by its stable id and resource type.")).describe("Additional dependencies for this resource beyond those defined in the resource itself.\nThe total dependencies are: resource.get_dependencies() + this list") }, +"enabledWhen": z.string().describe("Id of the boolean stack input that decides whether this resource is\ncreated at all. `None` means always create it.\n\nSet by `.enabled(input)` in the SDK. Setup emitters render the resource\nconditionally on the matching template variable, so a deployer who says no\nnever gets the resource, its outputs, or anything derived from it.").nullish(), get "lifecycle"(){ return ResourceLifecycleSchema.describe("Describes the lifecycle of a resource within a stack, determining how it's managed and deployed.") }, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 59ccc42e9..ff221963b 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,4 +1,7 @@ -export * from "./resource.js" +// ResourceBuilder is internal glue shared by the builders, not an extension +// point. Exporting it would commit us to its shape at the next publish. +export { Resource, ResourceTypeSchema } from "./resource.js" +export type { ResourceType } from "./resource.js" export * from "./storage.js" export * from "./worker.js" export * from "./container.js" diff --git a/packages/core/src/kv.ts b/packages/core/src/kv.ts index 6522374a1..2febe28d4 100644 --- a/packages/core/src/kv.ts +++ b/packages/core/src/kv.ts @@ -1,5 +1,5 @@ import { type Kv as KvConfig, KvSchema, type ResourceType } from "./generated/index.js" -import { Resource } from "./resource.js" +import { type Resource, ResourceBuilder } from "./resource.js" export type { KvOutputs, Kv as KvConfig } from "./generated/index.js" export { KvSchema as KvConfigSchema } from "./generated/index.js" @@ -36,7 +36,7 @@ export { KvSchema as KvConfigSchema } from "./generated/index.js" * - Clients must de-duplicate keys across pages * - No completeness guarantee under concurrent writes */ -export class Kv { +export class Kv extends ResourceBuilder { private _config: Partial = {} /** @@ -44,6 +44,7 @@ export class Kv { * @param id Identifier for the KV store. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ constructor(id: string) { + super() this._config.id = id } @@ -64,7 +65,7 @@ export class Kv { public build(): Resource { const config = KvSchema.parse(this._config) - return new Resource({ + return this.resource({ type: "kv", ...config, }) diff --git a/packages/core/src/postgres.ts b/packages/core/src/postgres.ts index d7e485d28..e072da188 100644 --- a/packages/core/src/postgres.ts +++ b/packages/core/src/postgres.ts @@ -3,7 +3,7 @@ import { PostgresSchema, type ResourceType, } from "./generated/index.js" -import { Resource } from "./resource.js" +import { type Resource, ResourceBuilder } from "./resource.js" export type { Postgres as PostgresConfig, PostgresOutputs } from "./generated/index.js" export { PostgresSchema as PostgresConfigSchema } from "./generated/index.js" @@ -12,7 +12,7 @@ export { PostgresSchema as PostgresConfigSchema } from "./generated/index.js" * Represents a managed PostgreSQL database. The target platform decides the backend; * the database is private and reachable only by same-stack workloads. */ -export class Postgres { +export class Postgres extends ResourceBuilder { private _config: Partial = { version: "17", storage: "20Gi", @@ -24,6 +24,7 @@ export class Postgres { * @param id ID of the database. A database of this name is created on the server. */ constructor(id: string) { + super() this._config.id = id } @@ -99,7 +100,7 @@ export class Postgres { public build(): Resource { const config = PostgresSchema.parse(this._config) - return new Resource({ + return this.resource({ type: "postgres", ...config, }) diff --git a/packages/core/src/queue.ts b/packages/core/src/queue.ts index 3d0517296..bb73a7435 100644 --- a/packages/core/src/queue.ts +++ b/packages/core/src/queue.ts @@ -1,5 +1,5 @@ import { type Queue as QueueConfig, QueueSchema, type ResourceType } from "./generated/index.js" -import { Resource } from "./resource.js" +import { type Resource, ResourceBuilder } from "./resource.js" export type { QueueOutputs, Queue as QueueConfig } from "./generated/index.js" export { QueueSchema as QueueConfigSchema } from "./generated/index.js" @@ -8,7 +8,7 @@ export { QueueSchema as QueueConfigSchema } from "./generated/index.js" * Represents a message queue resource with minimal, portable semantics. * Queue integrates with platform-native services (AWS SQS, GCP Pub/Sub, Azure Service Bus). */ -export class Queue { +export class Queue extends ResourceBuilder { private _config: Partial = {} /** @@ -16,6 +16,7 @@ export class Queue { * @param id Identifier for the queue. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ constructor(id: string) { + super() this._config.id = id } @@ -36,7 +37,7 @@ export class Queue { public build(): Resource { const config = QueueSchema.parse(this._config) - return new Resource({ + return this.resource({ type: "queue", ...config, }) diff --git a/packages/core/src/resource.ts b/packages/core/src/resource.ts index 05bb35a4b..340a3d1cd 100644 --- a/packages/core/src/resource.ts +++ b/packages/core/src/resource.ts @@ -1,4 +1,5 @@ import type { BaseResource, ResourceRef } from "./generated/index.js" +import type { StackInputRef } from "./input.js" export { ResourceTypeSchema } from "./generated/index.js" export type { ResourceType } from "./generated/index.js" @@ -8,11 +9,29 @@ export type { ResourceType } from "./generated/index.js" * This class encapsulates the common properties of a resource, such as its name and configuration. */ export class Resource { + /** + * Id of the boolean stack input that decides whether this resource is created at all. + * Undefined means always create it. + * + * Declared rather than defined because class fields materialise on construction: a + * plain declaration would put `enabledWhen: undefined` on every resource, including + * ungated ones, which shows up in the stack snapshots. + */ + declare readonly enabledWhen?: string + /** * Creates a new Resource instance. * @param config The configuration object for this specific resource type. + * @param enabledWhen Id of the boolean stack input gating this resource's creation. */ - constructor(public config: BaseResource) {} + constructor( + public config: BaseResource, + enabledWhen?: string, + ) { + if (enabledWhen !== undefined) { + this.enabledWhen = enabledWhen + } + } /** * Returns a reference to this resource. @@ -23,3 +42,34 @@ export class Resource { return { type: this.config.type, id: this.config.id } } } + +/** + * Base class for the per-resource builders, giving every resource type the same + * `.enabled()` gate without each builder reimplementing it. + */ +export abstract class ResourceBuilder { + private _enabledWhen?: string + + /** + * Creates this resource only when the given boolean stack input is true. + * A deployer who answers no never gets the resource, its outputs, or anything derived from it. + * A frozen resource's answer is fixed when the deployment is created; a live + * resource follows later edits to the input, and turning it off deletes the + * resource together with its data. + * @param input A boolean stack input declared with alien.inputs({...}). + * @returns The builder instance. + */ + public enabled(input: StackInputRef): this { + this._enabledWhen = input.id + return this + } + + /** + * Carries the `.enabled()` gate into the Resource. + * @param config The validated configuration for this resource type. + * @returns An immutable Resource. + */ + protected resource(config: BaseResource): Resource { + return new Resource(config, this._enabledWhen) + } +} diff --git a/packages/core/src/stack.ts b/packages/core/src/stack.ts index cb6387031..f77b8900d 100644 --- a/packages/core/src/stack.ts +++ b/packages/core/src/stack.ts @@ -81,6 +81,9 @@ export class Stack { if (options?.remoteAccess) { entry.remoteAccess = true } + if (resource.enabledWhen !== undefined) { + entry.enabledWhen = resource.enabledWhen + } this._config.resources![resource.config.id] = entry return this } diff --git a/packages/core/src/storage.ts b/packages/core/src/storage.ts index 0c707eb05..ac7e34de4 100644 --- a/packages/core/src/storage.ts +++ b/packages/core/src/storage.ts @@ -4,7 +4,7 @@ import { type Storage as StorageConfig, StorageSchema, } from "./generated/index.js" -import { Resource } from "./resource.js" +import { type Resource, ResourceBuilder } from "./resource.js" export type { LifecycleRule, StorageOutputs, Storage as StorageConfig } from "./generated/index.js" export { StorageSchema as StorageConfigSchema } from "./generated/index.js" @@ -12,7 +12,7 @@ export { StorageSchema as StorageConfigSchema } from "./generated/index.js" /** * Represents an object storage bucket. */ -export class Storage { +export class Storage extends ResourceBuilder { private _config: Partial = { publicRead: false, versioning: false, @@ -24,6 +24,7 @@ export class Storage { * @param id ID of the storage bucket. For names with dots, each dot-separated label must be ≤ 63 characters. */ constructor(id: string) { + super() this._config.id = id } @@ -76,7 +77,7 @@ export class Storage { public build(): Resource { const config = StorageSchema.parse(this._config) - return new Resource({ + return this.resource({ type: "storage", ...config, }) diff --git a/packages/core/src/vault.ts b/packages/core/src/vault.ts index 5abf7bda2..ccd90bc6c 100644 --- a/packages/core/src/vault.ts +++ b/packages/core/src/vault.ts @@ -1,5 +1,5 @@ import { type ResourceType, type Vault as VaultConfig, VaultSchema } from "./generated/index.js" -import { Resource } from "./resource.js" +import { type Resource, ResourceBuilder } from "./resource.js" export type { VaultOutputs, Vault as VaultConfig } from "./generated/index.js" export { VaultSchema as VaultConfigSchema } from "./generated/index.js" @@ -13,7 +13,7 @@ export { VaultSchema as VaultConfigSchema } from "./generated/index.js" * * The vault acts as a namespace for secrets and controls access permissions for workers and services. */ -export class Vault { +export class Vault extends ResourceBuilder { private _config: Partial = {} /** @@ -21,6 +21,7 @@ export class Vault { * @param id Identifier for the vault. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]). Maximum 64 characters. */ constructor(id: string) { + super() this._config.id = id } @@ -41,7 +42,7 @@ export class Vault { public build(): Resource { const config = VaultSchema.parse(this._config) - return new Resource({ + return this.resource({ type: "vault", ...config, }) From 4691883232c5ff24748afedd13ae7d5a0f577804 Mon Sep 17 00:00:00 2001 From: Itamar Zand Date: Tue, 21 Jul 2026 14:28:15 +0300 Subject: [PATCH 2/4] fix: persist deployer input values in the sqlite store The sqlite store dropped stack input values at every write path, so a standalone manager resolved gated live resources from their declared defaults instead of the deployer's stored answers. Store them in a new input_values column, feed them into the reconcile config, and carry them into the sync-acquire target config for remote runners. --- crates/alien-manager/src/loops/deployment.rs | 3 +- .../src/providers/environment_credentials.rs | 1 + .../providers/impersonation_credentials.rs | 1 + .../alien-manager/src/providers/oss_authz.rs | 1 + crates/alien-manager/src/registry_access.rs | 1 + crates/alien-manager/src/routes/stack.rs | 38 +++++++ crates/alien-manager/src/routes/sync.rs | 47 ++++++++ .../src/stores/sqlite/deployment.rs | 37 ++++++- .../src/stores/sqlite/migrations.rs | 5 + .../src/traits/deployment_store.rs | 6 ++ .../alien-manager/tests/sqlite_store_tests.rs | 101 ++++++++++++++++++ 11 files changed, 235 insertions(+), 6 deletions(-) diff --git a/crates/alien-manager/src/loops/deployment.rs b/crates/alien-manager/src/loops/deployment.rs index d2657f630..35e036377 100644 --- a/crates/alien-manager/src/loops/deployment.rs +++ b/crates/alien-manager/src/loops/deployment.rs @@ -590,7 +590,7 @@ impl DeploymentLoop { .expect("stored deployment carries stack_settings"); DeploymentConfig { - input_values: Default::default(), + input_values: deployment.input_values.clone(), deployment_name: Some(deployment.name.clone()), stack_settings: stack_settings.clone(), management_config, @@ -1066,6 +1066,7 @@ mod tests { user_environment_variables: None, management_config: None, deployment_token: None, + input_values: Default::default(), deployment_config: None, retry_requested: false, locked_by: None, diff --git a/crates/alien-manager/src/providers/environment_credentials.rs b/crates/alien-manager/src/providers/environment_credentials.rs index cf5de7a6a..ae4cdf8bc 100644 --- a/crates/alien-manager/src/providers/environment_credentials.rs +++ b/crates/alien-manager/src/providers/environment_credentials.rs @@ -167,6 +167,7 @@ pub(super) mod tests { management_config: None, deployment_config: None, deployment_token: None, + input_values: Default::default(), retry_requested: false, locked_by: None, locked_at: None, diff --git a/crates/alien-manager/src/providers/impersonation_credentials.rs b/crates/alien-manager/src/providers/impersonation_credentials.rs index 4e8fbcd24..291eefe0f 100644 --- a/crates/alien-manager/src/providers/impersonation_credentials.rs +++ b/crates/alien-manager/src/providers/impersonation_credentials.rs @@ -528,6 +528,7 @@ mod tests { management_config: None, deployment_config: None, deployment_token: None, + input_values: Default::default(), retry_requested: false, locked_by: None, locked_at: None, diff --git a/crates/alien-manager/src/providers/oss_authz.rs b/crates/alien-manager/src/providers/oss_authz.rs index 6a3a6d692..f9858c437 100644 --- a/crates/alien-manager/src/providers/oss_authz.rs +++ b/crates/alien-manager/src/providers/oss_authz.rs @@ -298,6 +298,7 @@ mod tests { user_environment_variables: None, management_config: None, deployment_token: None, + input_values: Default::default(), deployment_config: None, retry_requested: false, locked_by: None, diff --git a/crates/alien-manager/src/registry_access.rs b/crates/alien-manager/src/registry_access.rs index e5f4613bd..84146f1e4 100644 --- a/crates/alien-manager/src/registry_access.rs +++ b/crates/alien-manager/src/registry_access.rs @@ -899,6 +899,7 @@ mod tests { management_config: None, deployment_config: None, deployment_token: None, + input_values: Default::default(), retry_requested: false, locked_by: None, locked_at: None, diff --git a/crates/alien-manager/src/routes/stack.rs b/crates/alien-manager/src/routes/stack.rs index 90adf6e1d..4fba5c43a 100644 --- a/crates/alien-manager/src/routes/stack.rs +++ b/crates/alien-manager/src/routes/stack.rs @@ -775,6 +775,10 @@ fn import_changes_deployment( || existing.stack_settings.as_ref() != Some(&req.stack_settings) || existing.environment_info.as_ref() != environment_info.as_ref() || existing.runtime_metadata.as_ref() != Some(runtime_metadata) + // An edited gate answer changes nothing else in the payload, but the + // reconcile it schedules is what provisions or deprovisions the + // gated resource. + || existing.input_values != req.input_values || !imported_resources_are_unchanged(existing, imported_stack_state) } @@ -1155,6 +1159,7 @@ mod setup_update_authorization_tests { management_config: None, deployment_config: None, deployment_token: None, + input_values: Default::default(), retry_requested: false, locked_by: None, locked_at: None, @@ -1196,6 +1201,39 @@ mod setup_update_authorization_tests { ); } + /// A re-register that only flips a gate answer changes nothing else in + /// the payload; without the input-values clause the deployment never + /// reconciles and the toggle silently does nothing. + #[test] + fn an_input_only_edit_schedules_reconciliation() { + let prepared = stack("live-worker", "frozen-storage"); + let existing = record(prepared); + let mut req = request(); + req.stack_settings = existing.stack_settings.clone().unwrap(); + let runtime_metadata = existing.runtime_metadata.clone().unwrap(); + let imported_state = StackState::new(Platform::Aws); + + assert!(!import_changes_deployment( + &existing, + &imported_state, + &None, + &runtime_metadata, + "release", + &req, + )); + + req.input_values + .insert("enableAnalytics".to_string(), serde_json::json!(false)); + assert!(import_changes_deployment( + &existing, + &imported_state, + &None, + &runtime_metadata, + "release", + &req, + )); + } + #[test] fn setup_registration_replay_conflicts_when_the_payload_changes() { let mut original = request(); diff --git a/crates/alien-manager/src/routes/sync.rs b/crates/alien-manager/src/routes/sync.rs index d4d150ef9..825a3b9ed 100644 --- a/crates/alien-manager/src/routes/sync.rs +++ b/crates/alien-manager/src/routes/sync.rs @@ -932,6 +932,47 @@ mod tests { assert_eq!(config.public_endpoints, Some(public_endpoints)); } + /// Remote runners resolve gated live resources from the acquired config, + /// so the stored deployer answers must reach it — an empty map here would + /// flip gated resources back to their declared defaults. + #[test] + fn target_config_carries_stored_input_values() { + let stored_values = + HashMap::from([("enableAnalytics".to_string(), serde_json::json!(true))]); + let mut deployment = deployment_record_with_state("provisioning", None); + deployment.input_values = stored_values.clone(); + + let config = build_target_deployment_config( + &deployment, + StackSettings::default(), + None, + vec![], + "https://manager.example.test".to_string(), + None, + None, + ); + assert_eq!(config.input_values, stored_values); + + // A control-plane-supplied config owns the values when present. + let control_plane_values = + HashMap::from([("enableAnalytics".to_string(), serde_json::json!(false))]); + deployment.deployment_config = Some(DeploymentConfig { + input_values: control_plane_values.clone(), + ..test_deployment_config() + }); + + let config = build_target_deployment_config( + &deployment, + StackSettings::default(), + None, + vec![], + "https://manager.example.test".to_string(), + None, + None, + ); + assert_eq!(config.input_values, control_plane_values); + } + fn uninitialized_state() -> DeploymentState { DeploymentState { platform: Platform::Kubernetes, @@ -1004,6 +1045,7 @@ mod tests { user_environment_variables: None, management_config: None, deployment_token: None, + input_values: Default::default(), deployment_config: None, retry_requested: false, locked_by: None, @@ -1348,6 +1390,11 @@ fn build_target_deployment_config( DeploymentConfig::builder() .deployment_name(deployment.name.clone()) .stack_settings(stack_settings.clone()) + .input_values( + deployment_config + .map(|config| config.input_values.clone()) + .unwrap_or_else(|| deployment.input_values.clone()), + ) .maybe_management_config(management_config) .environment_variables(EnvironmentVariablesSnapshot { variables: env_vars, diff --git a/crates/alien-manager/src/stores/sqlite/deployment.rs b/crates/alien-manager/src/stores/sqlite/deployment.rs index a3ed88054..561ba401b 100644 --- a/crates/alien-manager/src/stores/sqlite/deployment.rs +++ b/crates/alien-manager/src/stores/sqlite/deployment.rs @@ -144,7 +144,7 @@ impl SqliteDeploymentStore { } /// All columns needed for deployment queries (must match parse_deployment order). - const DEPLOYMENT_COLUMNS: [Deployments; 28] = [ + const DEPLOYMENT_COLUMNS: [Deployments; 29] = [ Deployments::Id, Deployments::Name, Deployments::DeploymentGroupId, @@ -173,6 +173,7 @@ impl SqliteDeploymentStore { Deployments::Error, Deployments::WorkspaceId, Deployments::ProjectId, + Deployments::InputValues, ]; fn parse_deployment(row: &turso::Row) -> Result { @@ -243,6 +244,7 @@ impl SqliteDeploymentStore { project_id: p .optional_string(27, "project_id")? .unwrap_or_else(|| "default".to_string()), + input_values: p.optional_json(28, "input_values")?.unwrap_or_default(), }) } @@ -340,6 +342,7 @@ mod tests { let now = Utc::now(); DeploymentRecord { id: "dep_test".to_string(), + input_values: Default::default(), workspace_id: "default".to_string(), project_id: "default".to_string(), name: "test".to_string(), @@ -420,6 +423,12 @@ impl DeploymentStore for SqliteDeploymentStore { message: "Failed to serialize environment_variables".to_string(), })?; + let input_values_json = serde_json::to_string(¶ms.input_values) + .into_alien_error() + .context(GenericError { + message: "Failed to serialize input_values".to_string(), + })?; + // Build SQL in a block so sea_query types (which contain Rc and are !Send) // are dropped before the .await. let sql = { @@ -433,6 +442,7 @@ impl DeploymentStore for SqliteDeploymentStore { Deployments::StackSettings, Deployments::RetryRequested, Deployments::CreatedAt, + Deployments::InputValues, ]; let mut values: Vec = vec![ id.clone().into(), @@ -444,6 +454,7 @@ impl DeploymentStore for SqliteDeploymentStore { stack_settings_json.into(), 0i64.into(), now.to_rfc3339().into(), + input_values_json.into(), ]; if let Some(ref ev_json) = env_vars_json { @@ -495,6 +506,7 @@ impl DeploymentStore for SqliteDeploymentStore { setup_fingerprint_version: None, user_environment_variables: params.environment_variables, deployment_token: params.deployment_token, + input_values: params.input_values, management_config: None, deployment_config: None, retry_requested: false, @@ -552,6 +564,12 @@ impl DeploymentStore for SqliteDeploymentStore { message: "Failed to serialize imported environment_info".to_string(), })?; + let input_values_json = serde_json::to_string(¶ms.input_values) + .into_alien_error() + .context(GenericError { + message: "Failed to serialize input_values".to_string(), + })?; + let sql = { let mut columns = vec![ Deployments::Id, @@ -570,6 +588,7 @@ impl DeploymentStore for SqliteDeploymentStore { Deployments::SetupFingerprintVersion, Deployments::RetryRequested, Deployments::CreatedAt, + Deployments::InputValues, ]; let mut values: Vec = vec![ id.clone().into(), @@ -595,6 +614,7 @@ impl DeploymentStore for SqliteDeploymentStore { (params.setup_fingerprint_version as i64).into(), 0i64.into(), now.to_rfc3339().into(), + input_values_json.into(), ]; if let Some(ref release_id) = params.current_release_id { @@ -664,6 +684,7 @@ impl DeploymentStore for SqliteDeploymentStore { setup_fingerprint_version: Some(params.setup_fingerprint_version), user_environment_variables: None, deployment_token: params.deployment_token, + input_values: params.input_values, management_config: params.management_config, deployment_config: None, retry_requested: false, @@ -691,10 +712,7 @@ impl DeploymentStore for SqliteDeploymentStore { setup_fingerprint, setup_fingerprint_version, schedule_reconciliation, - // Carried for gate resolution on re-import; this store has no - // input-values column, so gated live resources resolve to their - // declared defaults on later steps. - input_values: _, + input_values, } = params; let mut merged_stack_state = stack_state; if let Some(existing) = self.get_deployment(caller, deployment_id).await? { @@ -727,6 +745,14 @@ impl DeploymentStore for SqliteDeploymentStore { message: "Failed to serialize imported environment_info".to_string(), })?; + // The re-import request carries the deployer's current answers, so it + // overwrites the stored map — that's the edit surface for gate flips. + let input_values_json = serde_json::to_string(&input_values) + .into_alien_error() + .context(GenericError { + message: "Failed to serialize input_values".to_string(), + })?; + let now = Utc::now(); let sql = { @@ -740,6 +766,7 @@ impl DeploymentStore for SqliteDeploymentStore { Deployments::SetupMetadata, setup_metadata.map(|metadata| metadata.to_string()), ) + .value(Deployments::InputValues, input_values_json) .value(Deployments::SetupTarget, setup_target) .value(Deployments::SetupFingerprint, setup_fingerprint) .value( diff --git a/crates/alien-manager/src/stores/sqlite/migrations.rs b/crates/alien-manager/src/stores/sqlite/migrations.rs index 494c87218..067e3f540 100644 --- a/crates/alien-manager/src/stores/sqlite/migrations.rs +++ b/crates/alien-manager/src/stores/sqlite/migrations.rs @@ -43,6 +43,9 @@ pub(crate) enum Deployments { WorkspaceId, /// Project this deployment belongs to. Always `"default"` in this store. ProjectId, + /// Deployer-provided stack input values as a JSON object. NULL on rows + /// written before gated resources existed; readers treat NULL as empty. + InputValues, } #[derive(Iden, Clone, Copy)] @@ -182,6 +185,7 @@ pub async fn run_migrations(db: &SqliteDatabase) -> Result<(), AlienError> { .not_null() .default("default"), ) + .col(ColumnDef::new(Deployments::InputValues).text()) .build(SqliteQueryBuilder), // releases Table::create() @@ -347,6 +351,7 @@ pub async fn run_migrations(db: &SqliteDatabase) -> Result<(), AlienError> { // commands (readable in status, never leasable/dispatchable). "ALTER TABLE commands ADD COLUMN target_resource_id TEXT", "ALTER TABLE commands ADD COLUMN target_resource_type TEXT", + "ALTER TABLE deployments ADD COLUMN input_values 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 414db0b84..ce8204c28 100644 --- a/crates/alien-manager/src/traits/deployment_store.rs +++ b/crates/alien-manager/src/traits/deployment_store.rs @@ -68,6 +68,11 @@ pub struct DeploymentRecord { /// configure registry credentials (Container App secrets, K8s imagePullSecrets). #[serde(default, skip_serializing)] pub deployment_token: Option, + /// Deployer-provided stack input values, keyed by input id. Gated live + /// resources resolve against these on every reconcile; without them a + /// stored deployment would fall back to declared defaults. + #[serde(default)] + pub input_values: HashMap, pub retry_requested: bool, pub locked_by: Option, pub locked_at: Option>, @@ -113,6 +118,7 @@ impl std::fmt::Debug for DeploymentRecord { "deployment_token", &self.deployment_token.as_ref().map(|_| "[REDACTED]"), ) + .field("input_values", &self.input_values) .field("retry_requested", &self.retry_requested) .field("locked_by", &self.locked_by) .field("locked_at", &self.locked_at) diff --git a/crates/alien-manager/tests/sqlite_store_tests.rs b/crates/alien-manager/tests/sqlite_store_tests.rs index c29d88e85..fa8f157b1 100644 --- a/crates/alien-manager/tests/sqlite_store_tests.rs +++ b/crates/alien-manager/tests/sqlite_store_tests.rs @@ -176,6 +176,107 @@ async fn create_and_get_deployment() { assert_eq!(fetched.status, "pending"); } +/// Gated live resources resolve against the deployer's stored answers on +/// every reconcile, so losing them here would silently flip resources back +/// to their declared defaults. +#[tokio::test] +async fn input_values_survive_create_import_and_reimport() { + let db = fresh_db().await; + let store = SqliteDeploymentStore::new(db); + let group_id = create_test_group(&store).await; + + let values = HashMap::from([ + ("enableAnalytics".to_string(), serde_json::json!(true)), + ("tier".to_string(), serde_json::json!("pro")), + ]); + + let created = store + .create_deployment( + &test_subject(), + CreateDeploymentParams { + deployment_protocol_version: alien_core::CURRENT_DEPLOYMENT_PROTOCOL_VERSION, + name: "gated".to_string(), + deployment_group_id: group_id.clone(), + platform: Platform::Aws, + base_platform: None, + stack_settings: StackSettings::default(), + stack_state: None, + environment_variables: None, + public_subdomain: None, + input_values: values.clone(), + deployment_token: None, + }, + ) + .await + .unwrap(); + assert_eq!(created.input_values, values); + let fetched = store + .get_deployment(&test_subject(), &created.id) + .await + .unwrap() + .unwrap(); + assert_eq!(fetched.input_values, values); + + let imported = store + .create_with_state( + &test_subject(), + CreateImportedDeploymentParams { + deployment_protocol_version: alien_core::CURRENT_DEPLOYMENT_PROTOCOL_VERSION, + name: "gated-import".to_string(), + deployment_group_id: group_id, + platform: Platform::Aws, + base_platform: None, + stack_settings: StackSettings::default(), + stack_state: StackState::new(Platform::Aws), + environment_info: None, + runtime_metadata: RuntimeMetadata::default(), + status: "provisioning".to_string(), + current_release_id: None, + desired_release_id: None, + import_source: None, + setup_metadata: None, + setup_target: "test".to_string(), + setup_fingerprint: "test".to_string(), + setup_fingerprint_version: 1, + deployment_token: None, + management_config: None, + input_values: values.clone(), + }, + ) + .await + .unwrap(); + let fetched = store + .get_deployment(&test_subject(), &imported.id) + .await + .unwrap() + .unwrap(); + assert_eq!(fetched.input_values, values); + + // A re-import carries the deployer's edited answers and overwrites the + // stored map — that's the edit surface for flipping gates. + let edited = HashMap::from([("enableAnalytics".to_string(), serde_json::json!(false))]); + let updated = store + .update_imported_stack_state( + &test_subject(), + &imported.id, + UpdateImportedDeploymentParams { + stack_state: StackState::new(Platform::Aws), + environment_info: None, + runtime_metadata: RuntimeMetadata::default(), + setup_metadata: None, + current_release_id: None, + setup_target: "test".to_string(), + setup_fingerprint: "test".to_string(), + setup_fingerprint_version: 1, + schedule_reconciliation: false, + input_values: edited.clone(), + }, + ) + .await + .unwrap(); + assert_eq!(updated.input_values, edited); +} + #[tokio::test] async fn list_by_status() { let db = fresh_db().await; From 7b6a818676d1a336e3de139766dda2a666af08f9 Mon Sep 17 00:00:00 2001 From: Itamar Zand Date: Tue, 21 Jul 2026 16:23:15 +0300 Subject: [PATCH 3/4] fix: fall back to stored gate answers when a config omits them A deployment config supplied by a control plane that predates gate answers carries an empty input-values map. Resolving gates from their declared defaults instead of the stored answers could deprovision an enabled resource, so both the reconcile loop and the sync-acquire target config now use the persisted values whenever the supplied config has none. --- crates/alien-manager/src/loops/deployment.rs | 8 ++++++++ crates/alien-manager/src/routes/sync.rs | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/crates/alien-manager/src/loops/deployment.rs b/crates/alien-manager/src/loops/deployment.rs index 35e036377..77eaf123e 100644 --- a/crates/alien-manager/src/loops/deployment.rs +++ b/crates/alien-manager/src/loops/deployment.rs @@ -580,6 +580,14 @@ impl DeploymentLoop { if config.monitoring.is_none() { config.monitoring = monitoring; } + // A control plane that predates gate answers omits inputValues + // entirely; resolving gates from declared defaults instead of the + // stored answers would deprovision an enabled resource. Whenever + // gates exist their answers are materialized at install, so a + // legitimately supplied map is never empty. + if config.input_values.is_empty() { + config.input_values = deployment.input_values.clone(); + } config.manager_url = Some(self.config.base_url()); config.native_image_host = native_image_host; config diff --git a/crates/alien-manager/src/routes/sync.rs b/crates/alien-manager/src/routes/sync.rs index 825a3b9ed..bf0749d04 100644 --- a/crates/alien-manager/src/routes/sync.rs +++ b/crates/alien-manager/src/routes/sync.rs @@ -971,6 +971,21 @@ mod tests { None, ); assert_eq!(config.input_values, control_plane_values); + + // A config from a control plane that predates gate answers has an + // empty map; the stored answers must stand in, not the defaults. + deployment.deployment_config = Some(test_deployment_config()); + + let config = build_target_deployment_config( + &deployment, + StackSettings::default(), + None, + vec![], + "https://manager.example.test".to_string(), + None, + None, + ); + assert_eq!(config.input_values, stored_values); } fn uninitialized_state() -> DeploymentState { @@ -1391,8 +1406,12 @@ fn build_target_deployment_config( .deployment_name(deployment.name.clone()) .stack_settings(stack_settings.clone()) .input_values( + // A stored config from a control plane that predates gate answers + // has an empty map; the record's persisted answers stand in so + // gates don't fall back to their declared defaults. deployment_config .map(|config| config.input_values.clone()) + .filter(|values| !values.is_empty()) .unwrap_or_else(|| deployment.input_values.clone()), ) .maybe_management_config(management_config) From 8faae4dc878f4f35b46e0164769dbaa81b8135a7 Mon Sep 17 00:00:00 2001 From: Itamar Zand Date: Tue, 21 Jul 2026 18:41:33 +0300 Subject: [PATCH 4/4] test: isolate the removed-resource test's vault dir MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The sibling secret-sync tests serialize on a shared vault-dir guard; without it this test races them through the process-global env var and either side can read a half-written secrets file. Only bites plain cargo test runs — nextest isolates processes. --- crates/alien-deployment/tests/test_platform.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/crates/alien-deployment/tests/test_platform.rs b/crates/alien-deployment/tests/test_platform.rs index c11ea3b65..99b67a2e1 100644 --- a/crates/alien-deployment/tests/test_platform.rs +++ b/crates/alien-deployment/tests/test_platform.rs @@ -784,6 +784,7 @@ async fn setup_authorized_update_clears_authority_only_on_success() { #[tokio::test] async fn update_completes_after_removed_resource_is_deleted() { + let _vault_env = test_vault_env().await; let config = create_test_config("hash_v1", false); let mut stack_v1 = create_test_stack("test-stack", "function-a"); let function_b = Worker::new("function-b".to_string())